std::seed_seq:: seed_seq
From cppreference.net
|
seed_seq
(
)
noexcept
;
|
(1) | (seit C++11) |
|
seed_seq
(
const
seed_seq
&
)
=
delete
;
|
(2) | (seit C++11) |
|
template
<
class
InputIt
>
seed_seq ( InputIt begin, InputIt end ) ; |
(3) | (seit C++11) |
|
template
<
class
T
>
seed_seq ( std:: initializer_list < T > il ) ; |
(4) | (seit C++11) |
1)
Der Standardkonstruktor. Nach der Konstruktion ist
v
leer.
2)
Der Kopierkonstruktor ist gelöscht:
std::seed_seq
ist nicht kopierbar.
3)
Konstruiert ein
.
std::seed_seq
mit den Werten im Bereich
[
begin
,
end
)
. Entspricht dem Standard-Initialisieren von
v
gefolgt von
for
(
InputIt s
=
begin
;
s
!
=
end
;
++
s
)
v
.
push_back
(
modseed
(
*
s
)
)
;
, wobei
mod_seed(x)=x mod 2
32
.
Wenn
std::
iterator_traits
<
InputIt
>
::
value_type
kein Ganzzahltyp ist, ist das Programm fehlerhaft.
Wenn
InputIt
die Anforderungen von
LegacyInputIterator
nicht erfüllt, ist das Verhalten undefiniert.
4)
Entspricht
seed_seq
(
il.
begin
(
)
, il.
end
(
)
)
. Dieser Konstruktor ermöglicht
Listeninitialisierung
aus der Liste der Seed-Werte.
Diese Überladung nimmt nur dann an der Überladungsauflösung teil, wenn
T
ein Ganzzahltyp ist.
Parameter
| begin, end | - | das Paar von Iteratoren, das die initiale Seed-Sequenz bezeichnet |
| il | - | die initiale Seed-Sequenz |
Beispiel
Diesen Code ausführen
#include <iterator> #include <random> #include <sstream> int main() { std::seed_seq s1; // standardkonstruierbar std::seed_seq s2{1, 2, 3}; // kann Listeninitialisierung verwenden std::seed_seq s3 = {-1, 0, 1}; // weitere Form der Listeninitialisierung int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; std::seed_seq s4(a, a + 10); // kann Iteratoren verwenden std::istringstream buf("1 2 3 4 5"); std::istream_iterator<int> beg(buf), end; std::seed_seq s5(beg, end); // sogar Stream-Eingabeiteratoren }
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 2180 | C++11 | alle Konstruktoren waren nicht-werfend | nur Überladung ( 1 ) ist nicht-werfend |
| LWG 3422 | C++11 |
1. Überladung
(
1
)
war nicht noexcept
2. Überladung ( 4 ) war nicht eingeschränkt |
1. noexcept gemacht
2. eingeschränkt |