Maison > développement back-end > C++ > La mémoire des éléments std::vector est-elle contiguë en C ?

La mémoire des éléments std::vector est-elle contiguë en C ?

Patricia Arquette
Libérer: 2024-12-20 18:56:10
original
241 Les gens l'ont consulté

Is std::vector Element Memory Contiguous in C  ?

Contiguïté de la mémoire des éléments std::Vector

Les développeurs concernés soulèvent souvent la question de savoir si les éléments d'un std::vector sont garantis être contigu. Cette propriété détermine s'il est permis de traiter le pointeur vers le premier élément comme un tableau de style C.

Dispositions standard

Initialement, la norme C 98 a négligé de spécifier cet aspect. Cependant, des rapports techniques (TR) ultérieurs ont rectifié cet oubli et la prochaine norme C 0x l'intégrera en tant qu'exigence explicite.

Spécifications TR

N2798, un projet de C 0x, postule :

"Un vecteur est un conteneur de séquence qui prend en charge les itérateurs à accès aléatoire... 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 <

Exemple

Sur la base de cette spécification, considérons le code suivant extrait :

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'
    }
}

Le standard C garantit que ce code fonctionnera comme prévu en permettant un accès direct en mémoire aux éléments du vecteur.

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