2009-08-31 117 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