C++:std::copy 用于将一个向量的值映射到另一个向量的esque函数

C++: std::copy esque function for mapping values of one vector to another

假设我开始于:

std::vector<double> obj_values(obj_iterable.size());

for(int i= 0; i < obj_iterable.size(); i++)
    obj_values[i] = obj_iterable[i].value

相反,我想写(用伪代码):

// Pseudo code
std::map_onto(obj_iterable.begin(), obj_iterable.end(), obj_values.begin(),
              [](Obj & x){ return x.value; });

// etc.

这似乎应该存在于标准库的某处,但我没有找到它,并且希望避免模板处理 unordered_setunordered_mapdeque等,如果我自己写的话。

我认为 std::transform 是您要找的:

std::transform(obj_iterable.begin(),obj_iterable.end(),
      std::back_inserter(obj_values), [](auto &x){ return x.value; }