C++ How to loop through a list of structs and access their properties
14,967
Solution 1
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);
Solution 2
(*Iterator).property1
or Iterator->property1
Author by
Valeria
Updated on June 15, 2022Comments
-
Valeria almost 2 years
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