Namespaces
Variants

std::seed_seq:: seed_seq

From cppreference.net
seed_seq ( ) noexcept ;
(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) 기본 생성자. 생성 후, v 는 비어 있습니다.
2) 복사 생성자가 삭제되었습니다: std::seed_seq 는 복사할 수 없습니다.
3) std::seed_seq [ begin , end ) 범위 내의 값들로 생성합니다. v 를 기본 초기화한 후 다음을 수행하는 것과 동일합니다: for ( InputIt s = begin ; s ! = end ; ++ s )
v  . push_back ( modseed ( * s ) ) ;
, 여기서 mod_seed(x)=x mod 2 32
입니다.
만약 std:: iterator_traits < InputIt > :: value_type 이 정수형이 아닌 경우, 프로그램은 형식에 맞지 않습니다.
만약 InputIt 이(가) LegacyInputIterator 의 요구사항을 충족하지 않으면, 동작은 정의되지 않습니다.
4) seed_seq ( il. begin ( ) , il. end ( ) ) 와 동등합니다. 이 생성자는 시드 값 목록으로부터의 목록 초기화 를 가능하게 합니다.
이 오버로드는 T 가 정수형인 경우에만 오버로드 해결에 참여합니다.

매개변수

begin, end - 초기 시드 시퀀스를 나타내는 반복자 쌍
il - 초기 시드 시퀀스

예제

#include <iterator>
#include <random>
#include <sstream>
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); // 스트림 입력 반복자도 사용 가능
}

결함 보고서

다음 동작 변경 결함 보고서는 이전에 게시된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 2180 C++11 모든 생성자가 non-throwing이었음 오버로드 ( 1 ) 만 non-throwing
LWG 3422 C++11 1. 오버로드 ( 1 ) 가 noexcept가 아니었음
2. 오버로드 ( 4 ) 가 제약되지 않았음
1. noexcept로 변경
2. 제약 추가