C ++ Как перебрать список структур и получить доступ к их свойствам - PullRequest
4 голосов
/ 31 августа 2009

Я знаю, что могу просмотреть список строк следующим образом:

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 ]

9 голосов
/ 31 августа 2009

Это так же просто, как 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);
3 голосов
/ 31 августа 2009

(*Iterator).property1 или Iterator->property1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...