让我们有一个嵌套循环:
#include <string>
#include <vector>
#include <iostream>
struct Account {
int money;
};
struct Person {
std::string name;
std::vector<Account> accounts;
};
int main()
{
std::vector<Person> persons;
for(const auto& iPerson: persons) {
for(const auto& iAccount: iPerson.accounts) {
std::cout << iPerson.name << ": " << iAcount.money << std::endl;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何将其替换为std::ranges::view以便可以访问 Person 和 Account。这里有一个类似的问题:用 std::ranges 摆脱嵌套的 for 循环。但在这种情况下,还需要对外部循环人员的引用
我期望的是来自所有循环级别的对象的某种引用元组
auto person_account_view = persons | //...create tuple view;
for(const auto& iPersonAccount: person_account_view) {
const auto& name = std::get<0>().name; …Run Code Online (Sandbox Code Playgroud)