我有这个 vector :
std::vector<T*> foo;
我有一个具有以下签名的函数(我无法更改它):
void bar(std::vector<T> const&);
如何以最少的更改将 foo 传递给该函数?
我目前的做法是:
std::vector<T> another_bar(bar.size());
std::transform(std::begin(bar),std::end(bar),std::begin(another_bar),[](T* item){return *T;});
我认为这里发生了很多不必要的复制。
编辑:
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;});
关于c++ - 将指针 vector 转换为对象 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35428092/