STL prev_permutation函数

STL prev_permutation函数算法

STL 中的 prev_permutation() 算法用于生成一个序列的重排列,它是所有可能的字典序中的下一个排列,默认使用 > 运算符来做这些事情。

它的参数为定义序列的迭代器和一个返回布尔值的函数,这个函数在下一个排列小于上一个排列时返回 true,如果上一个排列是序列中最小的,它返回 false,所以会生成字典序最大的排列。

STL prev_permutation函数详解

头文件

#include <algorithm>

语法

template <class BidirectionalIterator> bool prev_permutation(BidirectionalIterator first, BidirectionalIterator last ); template <class BidirectionalIterator, class Compare> bool prev_permutation (BidirectionalIterator first, BidirectionalIterator last, Compare comp);

参数

参数 描述
first 输入迭代器
last 输入迭代器
comp 自定义比较规则

案例

STL prev_permutation函数

使用 STL prev_permutation 函数对集合全排列

#include <iostream> #include <algorithm> using namespace std; int main() { std::cout << "嗨客网(www.haicoder.net)\n" << std::endl; int a[4] = {1, 2, 3, 4}; sort(a,a+4); do{ for(int i = 0;i < 4;i++) { cout << a[i] << " "; } cout<<endl; }while(prev_permutation(a, a+4)); }

我们在 Linux 下使用 g++ 进行编译,具体命令如下:

g++ prev_permutation.cpp -std=c++11

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

36_STL prev_permutation函数.png

我们使用了 prev_permutation 函数,对集合全排列。

STL prev_permutation函数总结

STL 中的 prev_permutation() 算法用于生成一个序列的重排列,它是所有可能的字典序中的下一个排列,默认使用 > 运算符来做这些事情。

它的参数为定义序列的迭代器和一个返回布尔值的函数,这个函数在下一个排列小于上一个排列时返回 true,如果上一个排列是序列中最小的,它返回 false,所以会生成字典序最大的排列。