我知道我可以遍历这样的字符串列表:
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
循环解释如何执行此操作,那么这也会非常有用,但从我读过的内容看起来更复杂。
非常感谢你
答案 0 :(得分:9)
就像Iterator->property
一样简单。您的第一次尝试几乎是正确的,由于运算符优先级,它只需要一些括号:(*Iterator).property
为了使用for_each,您必须将cout语句提升为函数或仿函数,如下所示:
void printData(AllDataType &data)
{
cout << "\t" + data.property1 + "\n";
cout << "\t" + data.property2 + "\n";
}
for_each(AllData.begin(), AllData.end(), printData);
答案 1 :(得分:3)
(*Iterator).property1
或Iterator->property1