std::shuffle全排列
时间: 2023-12-20 21:32:08 浏览: 89
C++ 11 std::function和std::bind使用详解
std::shuffle函数用于对一个序列进行随机排列,实现全排列的效果。下面是一个使用std::shuffle函数实现全排列的示例代码:
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
#include <random>
int main() {
std::vector<int> vec{1, 2, 3, 4, 5, 6};
std::random_device rd;
std::mt19937 gen(rd());
do {
std::shuffle(vec.begin(), vec.end(), gen);
for (const auto& num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
} while (std::next_permutation(vec.begin(), vec.end()));
return 0;
}
```
这段代码首先定义了一个包含1到6的整数向量vec。然后使用std::random_device生成一个随机数种子,再使用std::mt19937作为随机数生成器。接下来使用do-while循环,每次循环都调用std::shuffle函数对vec进行随机排列,并输出排列结果。然后使用std::next_permutation函数生成下一个全排列,直到所有的全排列都被生成完毕。
阅读全文