std::seed_seq::seed_seq

来自cppreference.com
< cpp‎ | numeric‎ | random‎ | seed seq
 
 
 
 
 
seed_seq();
(1) (C++11 起)
seed_seq( const seed_seq& ) = delete;
(2) (C++11 起)
template< class InputIt >
seed_seq( InputIt begin, InputIt end );
(3) (C++11 起)
template< class T >
seed_seq( std::initializer_list<T> il );
(4) (C++11 起)
1) 默认构造函数创建拥有零长度初始种子序列的 std::seed_seq 对象。
2) 复制构造函数被删除: std::seed_seq 不可复制。
3) 构造 std::seed_seq ,以拥有从范围 [begin, end) 上迭代并以解引用迭代器复制值获得的值 modulo 232
(即复制低 32 位)为初始种子序列。
4) 等价于 seed_seq(il.begin(), il.end()) 。此构造函数启用列表初始化

[编辑] 参数

begin, end - 初始种子序列,表示为一对 std::iterator_traits<>::value_type 为整数类型的输入迭代器
il - 整数类型对象的 std::initializer_list ,提供初始种子序列
类型要求
-
InputIt 必须满足 InputIterator 的要求。

[编辑] 异常

1) 不抛出

[编辑] 示例

#include <random>
#include <sstream>
#include <iterator>
int main()
{
    std::seed_seq s1; // 可默认构造
    std::seed_seq s2{1, 2, 3}; // 能用列表初始化
    std::seed_seq s3 = {-1, 0, 1}; // 列表初始化的另一种形式
    int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    std::seed_seq s4(a, a + 10); // 能用迭代器
    std::istringstream buf("1 2 3 4 5"); 
    std::istream_iterator<int> beg(buf), end;
    std::seed_seq s5(beg, end); // 即使是流输入迭代器
}