std::seed_seq:: seed_seq
From cppreference.net
|
seed_seq
(
)
noexcept
;
|
(1) | (desde C++11) |
|
seed_seq
(
const
seed_seq
&
)
=
delete
;
|
(2) | (desde C++11) |
|
template
<
class
InputIt
>
seed_seq ( InputIt begin, InputIt end ) ; |
(3) | (desde C++11) |
|
template
<
class
T
>
seed_seq ( std:: initializer_list < T > il ) ; |
(4) | (desde C++11) |
1)
El constructor por defecto. Después de la construcción,
v
está vacío.
2)
El constructor de copia está eliminado:
std::seed_seq
no es copiable.
3)
Construye un
.
std::seed_seq
con los valores en el rango
[
begin
,
end
)
. Equivale a inicializar por defecto
v
seguido por
for
(
InputIt s
=
begin
;
s
!
=
end
;
++
s
)
v
.
push_back
(
modseed
(
*
s
)
)
;
, donde
mod_seed(x)=x mod 2
32
.
Si
std::
iterator_traits
<
InputIt
>
::
value_type
no es un tipo entero, el programa está mal formado.
4)
Equivalente a
seed_seq
(
il.
begin
(
)
, il.
end
(
)
)
. Este constructor permite la
inicialización por lista
a partir de la lista de valores de inicialización.
Esta sobrecarga participa en la resolución de sobrecarga solo si
T
es un tipo entero.
Parámetros
| begin, end | - | el par de iteradores que denota la secuencia semilla inicial |
| il | - | la secuencia semilla inicial |
Ejemplo
Ejecutar este código
#include <iterator> #include <random> #include <sstream> int main() { std::seed_seq s1; // construible por defecto std::seed_seq s2{1, 2, 3}; // puede usar inicialización de lista std::seed_seq s3 = {-1, 0, 1}; // otra forma de inicialización de lista int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; std::seed_seq s4(a, a + 10); // puede usar iteradores std::istringstream buf("1 2 3 4 5"); std::istream_iterator<int> beg(buf), end; std::seed_seq s5(beg, end); // incluso iteradores de entrada de flujo }
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2180 | C++11 | todos los constructores eran no lanzadores | solo la sobrecarga ( 1 ) es no lanzadora |
| LWG 3422 | C++11 |
1. la sobrecarga
(
1
)
no era noexcept
2. la sobrecarga ( 4 ) no estaba restringida |
1. hecha noexcept
2. restringida |