"天真"的解决方案是;
std::vector<T> vector_of_objects;
vector_of_objects.reserve(vector_of_pointers.size());
for (T const * p : vector_of_pointers)
vector_of_objects.push_back(*p);
Run Code Online (Sandbox Code Playgroud)
上述内容似乎很麻烦,也许并不是很明显.
是否有一种解决方案至少效率不高,可能更快更直观?我在想C++ 11可能有一个我不知道的解决方案......
在我看来,这两行更短更易读:
for (auto p : vector_of_pointers)
vector_of_objects.emplace_back(*p);
Run Code Online (Sandbox Code Playgroud)
函数std::for_each不短于基于范围的循环,有时它由于传递lambda表达式而更大.
功能std::transform甚至更长std::for_each,但是单词transform是一个优势,可以找出下面发生的事情.
| 归档时间: |
|
| 查看次数: |
306 次 |
| 最近记录: |