c++ - sirve - para que se utiliza memset en c
Memset en el vector C++ (3)
Otra forma, creo que la vi primero en el libro de Meyers:
// Swaps with a temporary.
vec.swap( std::vector<int>(vec.size(), 0) );
Su único inconveniente es que hace una copia.
¿Hay alguna función equivalente de memset
para vectores en C ++?
(Método no clear()
o erase()
, quiero mantener el tamaño del vector, solo quiero inicializar todos los valores.)
Si su vector contiene tipos de POD , es seguro usar memset en él; se garantiza que el almacenamiento de un vector sea contiguo.
memset(&vec[0], 0, sizeof(vec[0]) * vec.size());
Editar: Perdón por lanzar un término indefinido hacia usted: POD significa POD , es decir, los tipos que estaban disponibles en C y las estructuras creadas a partir de ellos.
Editar nuevamente: como se señala en los comentarios, aunque bool
es un tipo de datos simple, el vector<bool>
es una excepción interesante y fallará miserablemente si intentas usar memset en él. La respuesta de Adam Rosenfield todavía funciona perfectamente en ese caso.
Use std::fill()
:
std::fill(myVector.begin(), myVector.end(), 0);