我有这个向量:
std::vector<T*> foo;
Run Code Online (Sandbox Code Playgroud)
我有一个具有以下签名的函数(我无法更改它):
void bar(std::vector<T> const&);
Run Code Online (Sandbox Code Playgroud)
如何以最少的更改将 foo 传递给该函数?
我目前的做法是:
std::vector<T> another_bar(bar.size());
std::transform(std::begin(bar),std::end(bar),std::begin(another_bar),[](T* item){return *T;});
Run Code Online (Sandbox Code Playgroud)
我认为这里发生了很多不必要的复制。
编辑:
T 不是模板化参数。它是一个指定的类型。
而您需要复制一些副本,您可以避免构造默认值,然后通过直接复制构造创建副本:
std::vector<T> another_bar;
another_bar.reserve(bar.size());
std::transform(std::begin(bar), std::end(bar),
std::back_inserter(another_bar),[](T* item){return *item;});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1495 次 |
| 最近记录: |