std :: next_permutation () из части вектора - PullRequest
1 голос
/ 26 января 2011

Я пытаюсь сгенерировать перестановки из части вектора. Смотри ниже.

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 Ответ

2 голосов
/ 26 января 2011

while (next_permutation(myArray.begin()+1, myArray.begin()+3)); должно работать

...