2009-05-26 7 views

Répondre

3

Êtes-vous après le suivant ou voulez-vous savoir lire à partir de l'entrée de la console et stocker dans la chaîne (qui est ensuite stockée dans la liste je suppose), c'est le premier cas, comment stocker les chaînes dans la liste sortie le contenu de la liste):

#include <iostream> 
#include <string> 
#include <list> 

using std::string; 
using std::list; 
using std::cout; 
using std::endl; 

list<string> strlist; 

strlist.push_back(string("string one")); 
strlist.push_back(string("string two")); 
strlist.push_back(string("and so on")); 

for (list<string>::iterator it = strlist.begin(); it != strlist.end(); ++it) 
{ 
    std::cout << (*it) << std::endl; 
} 

note: la liste contient une copie des chaînes, ce qui signifie que vous finissez par copier des chaînes lorsque vous les attribuez à la liste et lorsque vous les retournez de la liste. Pour éviter cela, vous pouvez allouer de la mémoire pour la chaîne et conserver uniquement les pointeurs dans la liste:

list<string*> ls; 
ls.push_back(new string("string one")); 

et ainsi de suite.

Cela fonctionne aussi bien ce qui précède est plus prolixe pour voir comment accéder aux éléments de la liste, dans l'algorithme de copie tout se passe dans les coulisses:

copy(strlist.begin(), strlist.end(), ostream_iterator<string>(cout, ", ")); 
+0

merci beaucoup Mr.StefanB – Cute

+0

pouvons-nous utiliser un objet d'une classe comme l'élément au lieu de la chaîne? par exemple si j'ai un objet d'une spécifique ma propre classe définie. ? @stefanB – gumuruh

0

Vous pouvez utiliser std :: copier dans et std :: ostream_iterator en pour copier des éléments dans la sortie comme ceci:

#include <iostream> 
#include <string> 
#include <list> 
#include <algorithm> 

int main(int, char*[]) 
{ 
    using namespace std; 

    list<string> mylist; 

    mylist.push_back("String1"); 
    mylist.push_back("String2"); 
    mylist.push_back("String3"); 

    copy(mylist.begin(), mylist.end(), ostream_iterator<string>(cout, ", ")); 
} 
Questions connexes