我有一个结构矢量如下。该结构保存了图的相关数据。
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
搜索特定数据点?
答案 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;
}
);