gpt4 book ai didi

c++传递大 vector 作为输出

转载 作者:行者123 更新时间:2023-11-30 01:45:52 24 4
gpt4 key购买 nike

我有几个大 vector (大约有一百万个元素),比方说 vector<int> v在函数或类成员函数中生成。我想在这个函数/成员之外有效地使用这个 vector ,即,当我将它作为输出传递时,避免完全复制它

vector<int> make_vect() {
vector<int> v(1e6);
... // some analysis
return v;
}

int main() {
vector<int> v = make_vect();
}

我知道我可以使用指向这个 vector 的指针 vector<int> *v相反,但这会使事情变得有点复杂(例如,我必须手动删除它们等等)。我想知道如果我不使用引用或指针,上面的代码将如何运行。

除了复制问题,在上面的代码中,分配的内存何时被释放?除非我调用 v.clear(),否则内容永远不会被删除吗?或者当没有指向容器的变量时它会自动删除它们?

最佳答案

这正是您应该按值返回对象的方式。编译器将应用 NRVO 优化以确保不会发生复制。

关于c++传递大 vector 作为输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33909255/

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