假设我从:
开始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_set
,unordered_map
,deque
等如果我要写自己的。
答案 0 :(得分:3)
我认为std::transform
正是您所寻找的:
std::transform(obj_iterable.begin(),obj_iterable.end(),
std::back_inserter(obj_values), [](auto &x){ return x.value; }