来自vector的一部分的std :: next_permutation()

时间:2011-01-26 12:13:54

标签: c++ arrays stl 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作为参数。

1 个答案:

答案 0 :(得分:2)

while (next_permutation(myArray.begin()+1, myArray.begin()+3));应该有效