Je commence tout juste à m'intéresser au C++ et je souhaite prendre quelques bonnes habitudes. Si je viens d'allouer un tableau de type int
avec le new
opérateur, comment puis-je les initialiser tous à 0 sans les passer en boucle moi-même ? Devrais-je simplement utiliser memset
? Existe-t-il une méthode "C++" pour le faire ?
Bien que je sois d'accord pour dire que c'est peu connu, je ne peux pas (entièrement) être d'accord pour dire que c'est vraiment très surprenant -- cela a été ajouté dans C++ 03, que la plupart des gens semblent avoir presque ignoré (puisque c'était l'une des rares choses nouvelles qu'il a ajoutées).
20 votes
Si vous voulez prendre de bonnes habitudes en C++, évitez d'utiliser les tableaux directement et utilisez plutôt les vecteurs. Le vecteur initialisera tous les éléments, quel que soit leur type, et vous n'aurez pas besoin de vous souvenir d'appeler l'opérateur delete[].
0 votes
@brianegge : Et si je dois passer un tableau à une fonction C externe, puis-je simplement lui donner le vecteur ?
12 votes
Vous pouvez passer
&vector[0]
.0 votes
Bien sûr, lorsque vous passez des tableaux à des fonctions C, vous devez généralement spécifier le pointeur sur le premier élément, &vector[0] comme l'a dit @jamesdlin, et la taille du tableau, fournie dans ce cas par vector.size().
0 votes
Relatif (demande pour les types autres que les tableaux) : stackoverflow.com/questions/7546620/