我知道我可以使用std::next_permutation
在包含元素的某些容器上[1, 2, 3]
这将生成该序列的 6 种排列。我想做的是给定一些设置[1, 2, 3, 4, 5, 6]
生成大小为 3 的所有可能的排列。因此对于这个例子,[4, 3, 2]
将是由该标准产生的排列之一。我正在寻找一种 STL 方法来执行此操作(如果可能),而不是编写自己的组合函数。我应该阅读哪些特定的 STL 实现?
目前(截至 2016 年)没有单一的 STD 功能可以做到这一点。您最接近的是来自的提案http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2639.pdf http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2639.pdf
你想要的函数被称为next_partial_permutation
看起来像(来自 N2639):
template <class BidirectionalIterator >
bool next_partial_permutation(
BidirectionalIterator first ,
BidirectionalIterator middle ,
BidirectionalIterator last)
{
std::reverse(middle , last);
return std::next_permutation(first , last);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)