Bonjour,
Je souhaiterai créer une liste dont le contenu est la concaténation d'un vecteur et d'une pile (stack). Mais, je ne trouve pas la fonction permettant de le faire. J'ai pensé à set_union mais cela ne fonctionne pas.
Pouvez-vous m'aidez svp ?
Version imprimable
Bonjour,
Je souhaiterai créer une liste dont le contenu est la concaténation d'un vecteur et d'une pile (stack). Mais, je ne trouve pas la fonction permettant de le faire. J'ai pensé à set_union mais cela ne fonctionne pas.
Pouvez-vous m'aidez svp ?
Je ne suis pas sûr de bien avoir compris la question, mais je pense qu'il faut que tu fasses ta fonction "à la main", en itérant sur les éléments de ton vecteur et de ta stack.
En tout cas s'il existe une fonction toute faite qui réalise ce que tu souhaites, je ne la connais pas ;)
++
Charles
Bonjour,
Pour le vecteur, il n'y a pas vraiment de problème, c'est une fonction insert() toute bête :
Par contre, pour la stack c'est plus délicat. Une stack n'est pas un conteneur classique avec un begin() et un end(). C'est une adaptation de conteneur dont l'interface est volontairement restreinte pour se conformer au concept de pile : seul push() et pop() sont autorisés.Code:
1
2
3
4
5
6 std::vector<int> v; // remplir v std::list<int> l; l.insert(l.end(), v.begin(), v.end());
Il n'est donc pas possible de parcourir la pile sans la modifier. Il faut la dépiler élément par élément dans une boucle à la main jusqu'à ce qu'elle soit vide.
Merci beaucoup pour ces réponses.:ccool:
Salut,
Allez savoir pourquoi, j'aurais trouvé beaucoup plus logique de vouloir concaténer un tableau et une file qu'un tableau et une pile...
Enfin, si, je sais pourquoi...: la file fonctionne sur le modèle LIFO et la pile sur le modèle FILO...
Du coup, il faut bien se dire que les éléments récupérés au départ de la pile apparaitront dans le conteneur résultant dans... l'ordre inverse de celle dans lequel ils ont été créés à la base...
Es tu sur que ce soit ce que tu souhaite :question: