std::seed_seq:: seed_seq
From cppreference.net
|
seed_seq
(
)
noexcept
;
|
(1) | (depuis C++11) |
|
seed_seq
(
const
seed_seq
&
)
=
delete
;
|
(2) | (depuis C++11) |
|
template
<
class
InputIt
>
seed_seq ( InputIt begin, InputIt end ) ; |
(3) | (depuis C++11) |
|
template
<
class
T
>
seed_seq ( std:: initializer_list < T > il ) ; |
(4) | (depuis C++11) |
1)
Le constructeur par défaut. Après construction,
v
est vide.
2)
Le constructeur de copie est supprimé :
std::seed_seq
n'est pas copiable.
3)
Construit un
.
std::seed_seq
avec les valeurs dans l'intervalle
[
begin
,
end
)
. Équivalent à une initialisation par défaut de
v
suivie de
for
(
InputIt s
=
begin
;
s
!
=
end
;
++
s
)
v
.
push_back
(
modseed
(
*
s
)
)
;
, où
mod_seed(x)=x mod 2
32
.
Si
std::
iterator_traits
<
InputIt
>
::
value_type
n'est pas un type entier, le programme est mal formé.
4)
Équivalent à
seed_seq
(
il.
begin
(
)
, il.
end
(
)
)
. Ce constructeur permet l'
initialisation par liste
à partir de la liste des valeurs de seed.
Cette surcharge participe à la résolution de surcharge uniquement si
T
est un type entier.
Paramètres
| begin, end | - | la paire d'itérateurs dénotant la séquence de départ initiale |
| il | - | la séquence de départ initiale |
Exemple
Exécuter ce code
#include <iterator> #include <random> #include <sstream> int main() { std::seed_seq s1; // constructible par défaut std::seed_seq s2{1, 2, 3}; // peut utiliser l'initialisation de liste std::seed_seq s3 = {-1, 0, 1}; // une autre forme d'initialisation de liste int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; std::seed_seq s4(a, a + 10); // peut utiliser des itérateurs std::istringstream buf("1 2 3 4 5"); std::istream_iterator<int> beg(buf), end; std::seed_seq s5(beg, end); // même les itérateurs d'entrée de flux }
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Applicable à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 2180 | C++11 | tous les constructeurs étaient non-lanceurs | seule la surcharge ( 1 ) est non-lanceuse |
| LWG 3422 | C++11 |
1. la surcharge
(
1
)
n'était pas noexcept
2. la surcharge ( 4 ) n'était pas contrainte |
1.rendue noexcept
2. contrainte |