Maison > développement back-end > C++ > Les éléments std::vector sont-ils garantis contigus ?

Les éléments std::vector sont-ils garantis contigus ?

Patricia Arquette
Libérer: 2024-12-19 12:48:10
original
810 Les gens l'ont consulté

Are std::vector Elements Guaranteed to Be Contiguous?

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::vector values;
// ... 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal