首页 > 解决方案 > 制作返回对数据成员的 const 引用的 lambda 的最简洁方法?

问题描述

随着对的投影的出现std::views::transform和添加,需要一个返回对其参数的数据成员的引用的函数变得很普遍。例如,以下代码将容器链接在一起:std::algorithmconst

#include <ranges>
#include <vector>

struct S
{
    std::vector<int> v;
};

int main()
{
    std::vector<S> structs;
    auto get_v = [](S const &s) -> auto& { return s.v; };
    auto chain = structs | std::views::transform(get_v);
    auto joined = chain | std::views::join;
}

这行得通,但是要构造的 lambdachain有点笨拙。有更好的方法吗?

作为比较的理想选择,在 Python 中我们可以编写

chain = (s.v for s in structs)

标签: c++stl

解决方案


推荐阅读