考虑
struct foo{};
struct bar{
bar(const foo& f){}
};
Run Code Online (Sandbox Code Playgroud)
想象我有一个
std::vector<foo> vec;
Run Code Online (Sandbox Code Playgroud)
我想将其转换为std::vector<bar> out. 我可以用
std::copy(vec.begin(), vec.end(), std::back_inserter(out));
Run Code Online (Sandbox Code Playgroud)
这样做既然bar不是explicit。然而,我必须bar如此explicit!但随后就back_inserter不再起作用了。我需要对参数进行哪些更改才能std::copy以某种方式包含显式内容bar(<iteratee>)?
Bat*_*eba 12
std::transform(
vec.begin(),
vec.end(),
std::back_inserter(out),
[](const foo& f){
return bar(f);
}
);
Run Code Online (Sandbox Code Playgroud)
会做的。