gpt4 book ai didi

c++ - 将指针 vector 转换为对象 vector

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:13 26 4
gpt4 key购买 nike

我有这个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com