gpt4 book ai didi

c++ - 从包含该成员的类的 vector 中提取特定成员的 vector 时如何避免显式循环

转载 作者:行者123 更新时间:2023-12-04 14:43:38 24 4
gpt4 key购买 nike

假设我有一个类

struct Foo {double x; double y;}

std::vector<Foo> xy;

我还有拉出x的功能成员:

std::vector<double> bar(const std::vector<Foo>& xy);

循环遍历 xy 的每个元素.

有没有使用 C++ 标准库的方法,这样我就可以避免显式 for循环?

最佳答案

您可以使用 std::transform .例如

std::vector<double> bar(const std::vector<Foo>& xy) {
std::vector<double> rt;
rt.reserve(xy.size());
std::transform(std::begin(xy),
std::end(xy),
std::back_inserter(rt),
[](const Foo& f) { return f.x; });
return rt;
}

为了比较,这里是使用基于范围的 for 循环的版本。作为@463035818_is_not_a_number commented它需要更少的打字。

std::vector<double> foo(const std::vector<Foo>& xy) {
std::vector<double> rt;
rt.reserve(xy.size());
for (auto const & f : xy) rt.push_back(f.x);
return rt;
}

关于c++ - 从包含该成员的类的 vector 中提取特定成员的 vector 时如何避免显式循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69160099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com