Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C++ How to loop through a list of structs and access their properties

I know I can loop through a list of strings like this:

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

but how can I do something like this?

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

or if someone can explain how to do this with a for_each loop, that would be very helpful as well, but it seemed more complicated from what I've read.

thank you so much

like image 524
Nona Urbiz Avatar asked Dec 18 '22 06:12

Nona Urbiz


1 Answers

It's as easy as Iterator->property. Your first attempt is almost correct, it just needs some parentheses due to operator precedence: (*Iterator).property

In order to use for_each, you would have to lift the cout statments into a function or functor like so:

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

for_each(AllData.begin(), AllData.end(), printData);
like image 111
Josh Matthews Avatar answered Jan 23 '23 15:01

Josh Matthews