2009-08-31 56 views
3

我知道我可以遍歷這樣的字符串列表:C++如何通過結構的列表循環和訪問他們的屬性

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

,但我怎麼能這樣做?

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

或者如果有人能解釋如何與for_each循環,這將是非常有益的,以及做到這一點,但它似乎從我讀過更加複雜。

太感謝你了

回答

9

這就像Iterator->property一樣簡單。你的第一次嘗試是正確的差不多,它只是需要由於運算符優先級的一些括號:(*Iterator).property

爲了使用的for_each,你將不得不解除COUT statments成一個函數或仿函數像這樣:

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

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

(*Iterator).property1Iterator->property1