【C++】next_permutation的用法
对于next_permutation函数,其函数原型为:
#include <algorithm>
bool next_permutation(iterator start,iterator end)
当前序列不存在下一个排列时,函数返回false.
迭代器(Iterator)是指针(pointer)的泛化,它允许程序员以相同的方式处理不同的数据结构(容器)。STL中有五种类型的迭代器,它们分别满足一定的要求。不同的迭代器要求定义的操作不一样。假设iter为任意容器类型的一个iterator,则++iter 表示向前移动迭代器使其指向容器的下一个元素,而*iter 返回iterator 指向元素的值,每种容器类型都提供一个begin()和一个end()成员函数。
begin()返回一个iterator 它指向容器的第一个元素
end()返回一个iterator 它指向容器的末元素的下一个位置
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int num[3]={1,2,3};
//sort(num,num+3);
do
{
cout<<num[0]<<" "<<num[1]<<" "<<num[2]<<endl;
}while(next_permutation(num,num+3));
return 0;
}
但当把num+3换成num+2的时候,结果就变成了
说明此时只针对1,2进行了全排列,后面的3没有变化,同时改变了数组前两个的值。
需要特别注意的的是next_permutation()在使用前需要对欲排列数组按升序排序,否则只能找出该序列之后的全排列数。
文章摘自:
迭代器相关: C++ STL迭代器使用详解 - 无痕眼泪
全排列相关:c++中的全排列 - 浅滩浅
本文章旨在记录学习,如有错误欢迎指正。