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