Maison >développement back-end >C++ >Les éléments std::vector sont-ils garantis contigus ?
Contiguïté des éléments std :: vector
La question se pose de savoir si les éléments std :: vector sont garantis contigus, permettant l'utilisation de le premier pointeur d'élément du vecteur sous forme de tableau C. Malgré l'absence de garantie explicite dans la norme C 98, il était difficile de répondre aux exigences std::vector sans contiguïté.
La norme C 0x a rectifié cette omission, comme indiqué dans n2798 :
"Un vecteur est un conteneur de séquence qui prend en charge... les éléments d'un vecteur sont stockés de manière contiguë, ce qui signifie que si v est un vecteur où T est un type autre que bool, alors il obéit à l'identité &v[n] == &v[0] n pour tout 0 <= n < v.size()."
Cela confirme que les éléments std::vector sont bien stockés de manière contiguë, permettant l'utilisation d'un pointeur vers le premier élément comme tableau C :
std::vectorvalues; // ... fill up values if (!values.empty()) { int *array = &values[0]; for (int i = 0; i < values.size(); ++i) { int v = array[i]; // do something with 'v' } } Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!