gre*_*ray 2 c++ stl initialization vector
如果有一个对象矢量,如:
vector <Obj> a;
Run Code Online (Sandbox Code Playgroud)
什么是创建向量a中对象指针向量的最佳方法?:
vector <Obj*> b;
Run Code Online (Sandbox Code Playgroud)
只是用 std::transform
// if b is empty (this will append to the end of b)
b.reserve(a.size()); // optional, but a good habit
std::transform(a.begin(), a.end(), std::back_inserter(b), [](Obj& o){ return &o; });
Run Code Online (Sandbox Code Playgroud)
或者
b.resize(a.size());
std::transform(a.begin(), a.end(), b.begin(), [](Obj& o){ return &o; });
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用直接boost::transform_iterator初始化b:
auto tr = [](Obj& o){ return &o; };
std::vector<Obj*> b(
boost::make_transform_iterator(a.begin(), tr),
boost::make_transform_iterator(a.end(), tr)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |