Existe-t-il une fonction équivalente de memset
pour les vecteurs en C ++?
(Pas la méthode clear()
ou erase()
, je veux conserver la taille du vecteur, je veux juste initialiser toutes les valeurs.)
Existe-t-il une fonction équivalente de memset
pour les vecteurs en C ++?
(Pas la méthode clear()
ou erase()
, je veux conserver la taille du vecteur, je veux juste initialiser toutes les valeurs.)
Utilisez std::fill()
:
std::fill(myVector.begin(), myVector.end(), 0);
Si votre vecteur contient POD types, il est sûr à utiliser memset sur - le stockage d'un vecteur est la garantie d'être contigus.
memset(&vec[0], 0, sizeof(vec[0]) * vec.size());
Edit: Désolé de jeter un terme non défini à vous - POD est synonyme de Plain Old Données, c'est à dire les types qui ont été disponibles en C et les structures construites à partir d'eux.
Edit encore: Comme l'a souligné dans les commentaires, même si, bool
est un type de données simple, vector<bool>
est une exception intéressante et échouent lamentablement si vous essayez d'utiliser memset sur elle. Adam Rosenfield réponse fonctionne encore parfaitement dans ce cas.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.