C ++如何遍历结构列表并访问其属性

时间:2009-08-31 02:16:47

标签: c++ list loops foreach struct

我知道我可以遍历这样的字符串列表:

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循环解释如何执行此操作,那么这也会非常有用,但从我读过的内容看起来更复杂。

非常感谢你

2 个答案:

答案 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).property1Iterator->property1