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

时间:2018-02-27 15:28:15

标签: c++ std

假设我从:

开始
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等如果我要写自己的。

1 个答案:

答案 0 :(得分:3)

我认为std::transform正是您所寻找的:

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