Sometimes I need to "double for loop" and since I do nothing in outer for loop for first loop variable beside passing it to inner for loop I wonder if it can be done elegantly with C++20 ranges.
Example of nested for loops I would like to "flatten".
struct Person{
std::string name = "Bjarne";
};
std::vector persons{Person{}, Person{}};
int main() {
for (const auto& person: persons) {
for (const auto& ch: person.name) {
std::cout << ch << std::endl;
}
}
}
Best what I can think of is:
std::ranges::for_each(persons | std::views::transform(&Person::name) | std::views::join, [](const char& ch){
std::cout << ch << std::endl;
});
but I wonder if there is a simpler way.