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

c++, foreach, list, loops, struct

Solution

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);

Problem

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

Original source