當我想要一個函數返回我的容器:返回值優化:我可以避免複製構建巨大的STL容器。
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);
是我的努力毫無意義的,因爲我可以肯定的是,編譯器 始終使用返回值優化?
由於C++ 11你的努力是沒有意義的,直到C++ 11是正確的做法。 – 101010
即使在C++ 03中,您也應該使用第一個代碼示例。 – Simple
您認爲RVO(如果應用)將與其他方式一樣有效。情況並非總是如此。 –