Maison > développement back-end > C++ > Pourquoi les conteneurs standard C interdisent-ils généralement les types incomplets ?

Pourquoi les conteneurs standard C interdisent-ils généralement les types incomplets ?

Susan Sarandon
Libérer: 2024-12-21 18:26:11
original
861 Les gens l'ont consulté

Why Do C   Standard Containers Typically Forbid Incomplete Types?

La justification derrière les conteneurs C interdisant les types incomplets

Dans le monde de la programmation C, les conteneurs sont des structures de données essentielles pour organiser et manipuler les données. Cependant, une caractéristique particulière des conteneurs C est leur aversion pour les types incomplets. Pourquoi en est-il ainsi ?

La réponse réside dans l'évolution historique de C . Au début, les implémentations de la Standard Template Library (STL) avaient du mal à gérer les conteneurs avec des types incomplets. Pour maintenir la stabilité et la rétrocompatibilité, le comité de normalisation a pris la décision d'interdire purement et simplement de tels conteneurs dans la norme C.

Cette restriction s'est avérée particulièrement efficace pour empêcher les structures de données récursives. Cela garantissait également que les implémentations STL existantes pourraient continuer à fonctionner comme prévu sans introduire de problèmes imprévus.

Cependant, l'interdiction des types incomplets a également suscité certaines critiques. Il limite certaines implémentations avancées de structures de données et bénéficierait d'une révision dans les futures révisions du standard C.

Bien que les conteneurs standards restent opposés au type incomplet, les concepteurs de bibliothèques comme ceux à l'origine de boost::container ont pris le initiative de créer leurs propres conteneurs qui n'imposent pas cette restriction. Cette décision permet une plus grande polyvalence et flexibilité dans la programmation C.

Mise à jour :

Avec l'avènement du C 17, certains conteneurs de la bibliothèque Standard C ont été modifiés pour autoriser les types incomplets. Cependant, il ne s'agit pas d'un changement universel et l'interdiction générale reste en vigueur pour la plupart des conteneurs de la norme.

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