函數定義
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。