2011-01-26 56 views
1

我想从矢量的一部分生成排列。见下文。std :: next_permutation()从一部分矢量

vector<int> myArray; 
myArray.resize(5); 
myArray[0] = 1; 
myArray[1] = 2; 
myArray[2] = 3; 
myArray[3] = 4; 
myArray[4] = 5; 
int i = 0; 

do { 
    for (i = 0; i < myArray.size(); i++) { 
     printf("%i ", myArray[i]); 
    } 
    printf("\n"); 
} while (next_permutation(myArray.at(1), myArray.at(3))); 

我需要生成唯一的位置1和3。不幸的是vector::at()正在恢复基准之间的置换,但next_permutation()需要BidirectionalIterator作为参数。

回答

2

while (next_permutation(myArray.begin()+1, myArray.begin()+3));应该工作