std::ranges::next_permutation

  • Post author:
  • Post category:
  • Post comments:0评论

std::ranges::next_permutation是C++20中引入的一个算法,用于生成给定范围内的下一个字典序排列。这个功能类似于STL中的std::next_permutation,但是针对范围进行了优化,可以作用于任何满足Range概念的对象,包括非随机访问迭代器的范围。

#include <iostream>
#include <vector>
#include <ranges>
#include <algorithm>
// 求当前排列的下一个排列(按字典序升序的下一个序列)
void test1()
{
    std::cout << "test1\n";
    std::string v{ "abc" };
    do {
        for (auto i : v) {
            std::cout << i << ' ';
        }
        std::cout << '\n';
    } while (std::ranges::next_permutation(v).found);
}
void test2()
{
    std::cout << "test2\n";
    std::string v{ "bac" };

    do {
        for (auto i : v) {
            std::cout << i << ' ';
        }
        std::cout << '\n';
    } while (std::ranges::next_permutation(v).found);
}
int main() {
    test1();
    test2();
    return 0;
}
文章作者: 张拓
文章链接: http://www.xssl.online/stdrangesnext_permutation/
版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议。转载请注明来自 张拓的博客
浏览次数: 291

张拓

陕西西安蓝田张拓QQ1070410059。一生所求不过“心安”二字。 然,尘世多纷扰。

发表回复