C++ <algorithm>置换

And*_*anu 2 c++ algorithm permutation

为什么此代码注释有效(代码编译并运行正常,但实际上并未显示排列):

int main(int argc, char *argv[])
{
    long number;
    vector<long> interval;
    vector<long>::const_iterator it;

    cout << "Enter number: ";
    cin >> number;

    while(number-->0){
        interval.push_back(number);
    }

    do{
        for(it = interval.begin(); it < interval.end(); ++it){
            cout << *it << " ";
        }
        cout << endl;
    } while(next_permutation(interval.begin(), interval.end()));

    return (0);
}
Run Code Online (Sandbox Code Playgroud)

但改变这一行后:

while(next_permutation(interval.begin(), interval.end()));
Run Code Online (Sandbox Code Playgroud)

有:

while(prev_permutation(interval.begin(), interval.end()));
Run Code Online (Sandbox Code Playgroud)

不是排列通过作用于位置来改变向量中的元素吗?

PS:我现在编辑了代码.

Nik*_*sov 7

排列按字典顺序排列,这就是算法std::next_permutationstd::prev_permutation算法的遍历.

在这里输入"最大"的排列,所以没有下一个排序.