是否可以在STL集<t>上实现next_permutation()

时间:2016-02-20 23:25:09

标签: c++ stl permutation

鉴于此设置

   set<string> s = {"a","b","c"};

是否可以实现next_permutation()来获取所有组合,其中元素不重复并且顺序重要?

1 个答案:

答案 0 :(得分:5)

不,不可能。 std::set是一个关联容器,并保持严格的弱排序。 std::next_permutation转换给定的范围会破坏排序。

如果您需要获取set内容的排列,我建议您使用std::vector。您可以将集合复制到矢量中,然后从中获取排列。

std::set<int> set_data;
//fill set
std::vector<int> temp(set_data.begin(), set_data.end());
do
{
    // code goes here
}
while(std::next_permutation(temp.begin(), temp.end()));