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;
}
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议。转载请注明来自 张拓的博客!