Comment puis-je créer std::list
avec un nombre d'éléments fixes?std :: liste taille fixe
Répondre
#include <list>
// list with 5 elements, using default constructor
const size_t fixedListSize(5);
std::list<int> mylist(fixedListSize);
Si vous voulez qu'il ait toujours exactement 5 éléments que vous auriez à envelopper dans une classe de façade pour empêcher l'insertion et l'effacement.
Si cela est en effet ce que vous voulez, vous feriez mieux d'utiliser un conteneur différent au lieu de list
, puisque, comme indiqué dans d'autres réponses, vous cacher les fonctionnalités les plus avantageuses de list
.
Voilà ce que 'const' est pour. –
@Alf P. Steinbach: Pas vraiment. Faire la liste const désactivera l'insertion et la suppression, mais en même temps, il désactivera la modification du contenu réel de la liste. –
Pourquoi la distribution? Un seul constructeur correspond à un appel avec un seul argument de type entier. –
Vous devez utiliser le constructeur std::list
.
explicit list (size_type n, const T& value = T(), const Allocator& = Allocator());
Il suffit de spécifier au moment de la création le nombre exact d'éléments.
std::list<int> someList(20);
Vous pouvez également spécifier une valeur initiale pour chaque élément.
std::list<int> someList(20, int(42));
std::list::resize est la bonne solution aussi.
Si vous voulez juste un conteneur de taille fixe, peut-être vous cherchez std::tr1::array
. (Ou tout simplement std::array
C++ 0x.)
Si vous n'insérez pas ou de supprimer des éléments que je ne pense pas qu'il y ait aucun avantage à utiliser std::list
au lieu de std::array
ou std::vector
.
Je dois vous demander pourquoi vous voulez avoir un nombre fixe d'éléments et pourquoi utiliser une liste?
Il se peut que l'utilisateur implémente un cache avec un nombre limité d'éléments et une règle de suppression LRU. Dans ce cas, une liste est une bonne collection à utiliser. Chaque fois qu'un élément est accédé, vous épisserez cet élément au début de la liste. Si vous avez besoin d'insérer un nouvel élément (pour que la liste soit complète), vous devez quitter le dos de la liste.
Vous pouvez également maintenir une sorte de recherche pour les éléments, mais std :: list est la meilleure classe pour gérer LRU.
- 1. Taille fixe à la liste
- 2. css, taille fixe
- 3. CSS: taille fixe div, position verticale fixe et centré horizontalement?
- 4. Blackberry VerticalFieldManager avec taille fixe: Défilement numéro
- 5. Taille de police fixe dans firefox?
- 6. Google Protocol Buffers - Tampon de taille fixe?
- 7. EN Asp.net, fixe la taille du navigateur
- 8. Afficher l'image en div taille fixe
- 9. Définir un double tableau sans taille fixe?
- 10. créer une vignette avec taille fixe codeignitor;
- 11. Taille de la bordure d'une fenêtre fixe
- 12. taille de std :: vector avec struct elements
- 13. Tri std :: liste de pointeurs
- 14. Initialiser facilement une liste std :: de std :: strings?
- 15. Liste bordure pleine taille
- 16. Comment trier std :: Liste <..>
- 17. Comment déclarer une liste de longueur fixe dans specman?
- 18. Affichage des images en taille de fichier fixe
- 19. OpenGL ES: obtenir une taille fixe pour un objet
- 20. iphone définir une taille de police fixe pour UILabels
- 21. Malloc personnalisé pour beaucoup de petits blocs de taille fixe?
- 22. 960: aide avec la colonne de taille non fixe
- 23. Concepteur d'interface graphique Netbeans et panneaux d'application de taille fixe
- 24. "Collection était d'une taille fixe" Exception dans EF4 avec POCO
- 25. OpenGL ES - comment garder certains objets à une taille fixe?
- 26. Comment spécifier un tampon de taille fixe dans C++/CLI?
- 27. Déclaration de propriétés de chaîne de taille fixe dans Delphi
- 28. un div liquide avec une taille fixe div
- 29. La complexité de l'algorithme avec entrée est de taille fixe
- 30. Limitation de caractères à une taille fixe javascript
La taille devrait être fixée pour toute sa durée de vie? Dans ce cas, pourquoi utilisez-vous une liste? Ses avantages sur les tableaux (et leurs wrappers, comme 'std :: vector' et' std :: array') sont principalement en termes d'insertion/suppression d'éléments, demandant une liste fixe ne demandant que ses inconvénients (plus de gaspillage de mémoire, accès aléatoire lent, ...). –