从结构向量中获取特定成员的向量

时间:2017-07-28 16:00:35

标签: c++ vector struct

我有一个结构矢量如下。该结构保存了图的相关数据。

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

std::vector<DATA_T> results;

我需要能够检索结果向量中的所有x值,并将它们存储为双精度矢量

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

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

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

1 个答案:

答案 0 :(得分:1)

您可以使用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