【问题标题】:Get vector of a specific member from a vector of structs从结构向量中获取特定成员的向量
【发布时间】:2017-07-28 16:00:34
【问题描述】:

我有一个结构向量,如下所示。该结构包含绘图的相关数据。

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 搜索特定数据点的方法?

【问题讨论】:

标签: c++ vector struct


【解决方案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

【讨论】:

  • @iyop45 对于这段特定的代码std::transform 可能是一个不错的选择,而不会失去可读性。但一般情况下,一个地方太多的 STL 算法根本无法保证可读性:)
猜你喜欢
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多