前の順列と次の順列の違いを把握するために、サンプルプログラムを試していました。しかし、私のプログラムは正しく動作していないようです。配列内の要素の数を尋ねることからプログラムを開始し、単純なforループを使用して配列を構築します
for(i = 0; i < x; i++)
ptr[i] = i;
cout << "Possible permuations using prev_permutation: " << endl;
do{
for(i = 0; i < x; i++)
cout << ptr[i] << " ";
cout << endl;
} while(prev_permutation(ptr, ptr+x));
cout << "Possible permuations using next_permutation: " << endl;
do{
for(i = 0; i < x; i++)
cout << ptr[i] << " ";
cout << endl;
} while(next_permutation(ptr, ptr+x));
3つの要素(0、1、2)のサンプルを使用してコードを実行すると。prev_permutationは私に(0、1、2とそれだけ)を与えます。次に、next_permutationは私に(2、1、0)を与えます。ただし、prev_permutation部分のコードにコメントを付けると、next_permutationのみが実行されているときに、セット(0、1、2)の適切な6つの異なる順列が取得されます。何が起こっているのか理解できないようです。