2009-08-31 7 views
3

Je sais que je peux boucler à travers une liste de chaînes comme ceci:C++ Comment faire une boucle à travers une liste de struct, et accéder à leurs propriétés

list<string>::iterator Iterator; 
for(Iterator = AllData.begin(); 
    Iterator != AllData.end(); 
    Iterator++) 
{ 
    cout << "\t" + *Iterator + "\n"; 
} 

mais comment puis-je faire quelque chose comme ça?

list<CollectedData>::iterator Iterator; 
for(Iterator = AllData.begin(); 
    Iterator != AllData.end(); 
    Iterator++) 
{ 
    cout << "\t" + *Iterator.property1 + "\n"; 
    cout << "\t" + *Iterator.property2 + "\n"; 
} 

ou si quelqu'un peut expliquer comment faire cela avec une boucle for_each, qui serait très utile aussi bien, mais il semblait plus compliqué de ce que je l'ai lu.

Merci beaucoup

Répondre

9

Il est aussi facile que Iterator->property. Votre première tentative est presque correcte, il a juste besoin de quelques parenthèses en raison de la priorité des opérateurs: (*Iterator).property

Pour utiliser for_each, vous devez lever les statments cout en fonction ou foncteur comme ceci:

void printData(AllDataType &data) 
{ 
    cout << "\t" + data.property1 + "\n"; 
    cout << "\t" + data.property2 + "\n"; 
} 

for_each(AllData.begin(), AllData.end(), printData); 
3

(*Iterator).property1 ou Iterator->property1

Questions connexes