C++ STL下一代排列组合

Mut*_*thm 8 c++ algorithm combinations stl permutation

我知道我可以std::next_permutation在一些包含元素的容器上使用,这些元素[1, 2, 3]会产生这个序列的6个排列.我想要做的是给出一些集合[1, 2, 3, 4, 5, 6]生成大小为3的所有可能的排列.因此对于这个例子,[4, 3, 2]将是由此标准产生的排列之一.我正在寻找一种STL方式(如果可能的话),而不是编写我自己的组合功能.我应该阅读的任何特定的STL实现?

ric*_*ici 2

这不是最有效的算法,但很简单。您必须从已排序的元素开始。要获得下一个 k 排列,请反转最后 nk 个元素,然后尝试获得下一个排列。前 k 个元素是下一个 k 排列。