我正在尝试一个示例程序来掌握 prev 和 next 排列之间的区别。但是,我的程序似乎无法正常工作。我通过询问数组中元素的数量来启动程序,然后用一个简单的 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 种不同排列。我似乎无法理解发生了什么。