Maison > développement back-end > C++ > Pourquoi ne puis-je pas utiliser de références dans un vecteur C ?

Pourquoi ne puis-je pas utiliser de références dans un vecteur C ?

DDD
Libérer: 2024-12-22 18:11:15
original
763 Les gens l'ont consulté

Why Can't I Use References in a C   Vector?

Le mystère des références vectorielles

Dans le domaine du C, les vecteurs règnent en maître en tant qu'outil puissant de gestion dynamique de la mémoire. Cependant, lorsqu'il s'agit de stocker des références dans des vecteurs, une erreur déroutante peut survenir.

Considérez l'extrait de code suivant :

std::vector<int> hello;
Copier après la connexion

Ce code se compile de manière transparente, vous permettant de créer un vecteur de entiers. Mais que se passe-t-il lorsque nous essayons d'utiliser des références à la place ?

std::vector<int &> hello;
Copier après la connexion

Le compilateur génère une erreur en s'exclamant : "le pointeur vers une référence est illégal". Ce comportement curieux découle de la nature fondamentale des références en C . Les références, une fois initialisées, restent immuables, liées à leur référent respectif pour toute leur durée de vie. Attribuer une nouvelle valeur à une référence est strictement interdit.

Malheureusement, cette immuabilité entre en conflit avec la nature même des conteneurs comme les vecteurs. Les conteneurs nécessitent que leurs composants soient assignables pour garantir une bonne gestion de la mémoire et des capacités de modification. Étant donné que les références n'ont pas cette assignabilité, elles sont incompatibles en tant que composants vectoriels.

Par conséquent, la seule option viable pour stocker des références dans des vecteurs est d'utiliser des pointeurs, qui offrent la flexibilité requise pour pointer vers différents objets au fil du temps.

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal