2010-10-08 16 views
2

J'utilise C++ et je veux pousser les chaînes dans la pile comme pousser int dans les piles.Poussez une chaîne dans une pile?

Par exemple

3."stackoverflow" 
2."is" 
1."Best" 
0."site" 

à chaque index de la pile je veux pousser une chaîne. Comment puis-je faire ceci?

+10

Avez-vous déjà essayé quelque chose? Si oui, pourriez-vous poster cela aussi? –

+1

"tout indice de pile" n'a pas vraiment de sens. Les piles ne sont pas indexées; vous avez seulement accès à l'élément le plus haut. Cependant, il existe des conteneurs indexés comme 'vector' qui ont une sémantique push/pop de type pile. – meagar

+0

Il y a un malentendu ici. Je veux pousser les chaînes dans la pile. aime à pousser comme entiers. push ("Bonjour"); push ("monde"); –

Répondre

12

En utilisant STL, par exemple:

#include <stack> 

std::stack<std::string> s; 
s.push("A"); 
s.push("B"); 
s.push("C"); 
s.push("D"); 

Vérifiez la STL reference pour plus d'informations.

7

suis totalement d'accord avec Ton van den Heuvel cependant vous avez dit

« à chaque index de la pile que je veux pousser une chaîne »

Que voulez-vous dire « à chaque index » ? Vous devez savoir qu'une fois que les chaînes sont dans la pile, vous ne pouvez accéder qu'à la chaîne supérieure et il n'y a pas d'accès par index dans une pile. Si c'est ce dont vous avez besoin, utilisez plutôt std :: vector.

+0

Si cplusplus.com est correct (http://www.cplusplus.com/reference/stl/stack/), le type sous-jacent par défaut de 'std :: stack' est' std :: deque', pas 'std :: vecteur'. +1 de toute façon, mais vous devriez corriger cela. –

+0

@Matteo: désolé, s'est mélangé, le vecteur était la valeur par défaut pour priority_queue ... édition –

1

Je l'ai fait. J'ai vu plus tôt comment convertir la chaîne en tableau de caractères et l'ai mélangé à ce que j'étudie maintenant c'est-à-dire. des piles.

stack <int> Name; 
name="mohit"; 
for(char c:name) 
Name.push(c); 
for(char c:name){ 
cout<<Name.top(); 
Name.pop();} 

Et la production a été tihom Sa fonction est simple. Il convertit la chaîne en tableau de caractères, puis pousse la chaîne caractère par caractère. Pour sortir, nous utilisons la même boucle et il ressort avec le principe LIFO.