c++ - 从结构 vector 中获取特定成员的 vector

标签 c++ vector struct

我有一个结构 vector ,如下所示。该结构保存绘图的相关数据。

struct DATA_T
{
    double x;
    double y;
    double z;
}

std::vector<DATA_T> results;

我需要能够检索结果 vector 中的所有 x 值并将它们存储为 double vector

我知道我可以通过编程方式创建这些 vector 。

std::vector<double> x_values;
x_values.reserve(results.size());
for(auto const &data : results)
{
    x_values.push_back(data.x);
}

但是,我想知道是否有更简洁的解决方案。也许使用与我如何使用 find_if 搜索特定数据点类似的方法?

最佳答案

你可以使用 std::transform为此,为其提供适当的 lambda 以检索 x:

std::vector<double> x_values;
x_values.reserve(results.size());

std::transform(std::cbegin(results), std::cend(results),
    std::back_inserter(x_values),
    [](const auto& data) {
        return data.x;
    }
);

DEMO

关于c++ - 从结构 vector 中获取特定成员的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45377857/

相关文章:

c++ - 在 CLion 项目中链接 boost

c++ - 使用 Eigen Library 向上和向左调整矩阵大小

java - 如何在 JAVA 中将元素添加到另一个列表(或 vector )时自动将其添加到一个列表(或 vector )

c - 打印 C 中结构数组中每个结构成员的函数

c++ - 被函数指针迷惑为类中另一个函数的参数

C++ 优雅的方式来标记不属于 vector 的索引

c++ - 如何将字符串 vector 传递给 foo(char const *const *const)?

c++ - 将元素添加到现有结构会使函数因段错误而崩溃

C: 使用 strcpy 将字符串分配给结构数组导致的段错误

java - 哪个文件会告诉我 doxygen 中的映射