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
이 정수형이 아닌 경우, 프로그램은 형식에 맞지 않습니다.
이 오버로드는
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. 제약 추가 |