函数定义
template
BidirectionalIterator partition(BidirectionalIterator first,
BidirectionalIterator last,UnaryPredicate pred)
{
while(first!=last){
while(pred(*first)){
++first;
if(first==last)
return first;
}
do{
--last;
if(first==last)
return first;
}while(!pred(*last));
swap(*first,*last);
++first;
}
return first;
}n
函数的作用
Partition函数用于返回一个Variant(String),指定一个范围,在一系列计算的范围中指定的数字出现在这个范围内。
函数的语法格式
Partition(number,start,stop,interval)
Partition函数的语法含有下面这些命名参数:部分描述
number必要参数。整数,在所有范围中判断这个整数是否出现。
start必要参数。整数,数值范围的开始值,这个数值不能小于0。
stop必要参数。整数,数值范围的结束值,这个数值不能等于或小于start。
说明:
Partition函数会标识number值出现的特定范围,并返回一个Variant(String)来描述这个范围。
Partition函数在查询中是最有用的。可以创建一个选择查询显示有多少定单落在几个变化的范围内,例如,定单数从1到1000、1001到2000,以此类推。
函数举例
下面的表格使用三组start,stop以及interval部分,来显示怎样决定这个范围。第一个范围和最后一个范围两列显示Partition的返回值,此范围的低端(lowervalue)和高端(uppervalue)是以冒号分开的。
startstopinterval第一个范围之前第一个范围最后一个范围最后一个范围之后0995":-1""0:4""95:99""100:"2019910":19""20:29""190:199""200:"100101020":99""100:119""1000:1010""1011:"从上面的表格中得知,在第三行中,由start和stop所定义的数值范围不能以interval来均分。所以,即使interval是20,最后一个范围也只能扩展到stop(11个数)。
如果需要的话,Partition会在返回的范围中加上足够的空白,以便让返回值在冒号的左右两侧有相同的字符数,其值就是stop中的字符数再加一。如此可确保当要使用Partition与其它的数值作运算时,所得的字符串,可以在之后的排序操作中得到正确的结果。如果interval是1,则范围便是number:number,而不管start和stop参数如何。比如说,如果interval是1,number是100,而stop是1000,则Partition会返回"100:100"。如果任何部分是Null,则Partition会返回一个Null。