小编awa*_*nx2的帖子

在访问所有上下文时用 std::ranges 替换嵌套循环

让我们有一个嵌套循环:

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

c++ std-ranges

2
推荐指数
1
解决办法
215
查看次数

标签 统计

c++ ×1

std-ranges ×1