


« std::array » a-t-il la même taille et la même disposition de mémoire qu'un tableau C classique ?
Dec 06, 2024 pm 10:10 PMTaille de std::array dans la norme C
La spécification C 11 pour std::array garantit un stockage contigu et des performances comparables à tableaux réguliers. Cependant, cela soulève la question de savoir si std::array a la même taille et la même disposition de mémoire qu'un tableau standard.
Selon le §23.3.2.1/2 de la norme, un tableau est un agrégat qui peut être initialisé à l'aide de la syntaxe :
std::array<T, N> a = { initializer-list };
En tant qu'agrégat, std::array doit stocker directement les valeurs de la liste d'initialisation. Bien qu'il soit théoriquement possible qu'un std::array stocke des données auxiliaires ou diffère par son alignement d'un tableau normal, ces possibilités sont très improbables.
En pratique, la plupart des compilateurs traitent std::array comme un bloc contigu de mémoire avec la même taille et la même disposition qu’un tableau ordinaire. Ce comportement est pris en charge par une documentation tierce et observé dans divers compilateurs.
Par exemple, le code suivant, qui accède à un std::array en tant que pointeur de tableau multidimensionnel, fonctionne comme prévu :
std::vector<std::array<int, N>> x(M); typedef int (*ArrayPointer)[N]; ArrayPointer y = (ArrayPointer)&x[0][0]; // use y like normal multidimensional array
Sur la base de ces observations, il est généralement prudent de supposer que :
sizeof(std::array<int, N>) == sizeof(int) * N
Cependant, il est important de noter que ce comportement n'est pas strictement garanti par la norme. Les compilateurs disposent d'une certaine flexibilité dans la façon dont ils implémentent std::array, et les futures révisions de la norme pourraient modifier ce comportement.
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

C Fonction Langue Format de lettre ÉTAPES DE CONVERSION DE CAS

Gulc: Cibliothèque C construite à partir de zéro

Quels sont les types de valeurs renvoyées par les fonctions du langage C? Qu'est-ce qui détermine la valeur de retour?

Quelles sont les définitions et les règles d'appel des fonctions du langage C et quelles sont les

Comment fonctionne la bibliothèque de modèle standard C (STL)?

Où est la valeur de retour de la fonction de langue C stockée en mémoire?

Utilisation distincte et partage de phrases

Quel est le multiple commun minimum du diviseur commun maximal d'une fonction de langue C?
