gpt4 book ai didi

c++ - 返回值优化 : ho can I avoid copy construction of huge STL containers.

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:37 25 4
gpt4 key购买 nike

当我想要一个函数返回一个容器时:

vector<T> func(){
vector<T> result;
...
return result;
}

按以下方式使用:

vector<T> result = func(); 

为了避免复制我的容器的开销我经常编写函数,以便它只返回接受一个容器的非常量实例。

void func(vector<T>& result){
result.clear();
...
result;
}

按以下方式使用:

vector<T> result;
func(result);

难道我的努力没有意义,因为我可以确定编译器总是使用返回值优化?

最佳答案

没有意义。你提到的RVO类型称为命名RVO(NRVO),大多数编译器都实现了它。

无论如何,在 C++11 中,vector 具有移动构造函数,因此即使 NRVO 不适用,它仍然会被移动,而不是被复制。

关于c++ - 返回值优化 : ho can I avoid copy construction of huge STL containers.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33562810/

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