我想知道如果有下列三種方法之間的差異:
void FillVector_1(vector<int>& v) {
v.push_back(1); // lots of push_backs!
}
vector<int> FillVector_2() {
vector<int> v;
v.push_back(1); // lots of push_backs!
return v;
}
vector<int> FillVector_3() {
int tab[SZ] = { 1, 2, 3, /*...*/ };
return vector<int>(tab, tab + SZ);
}
表現如何? – Anycorn 2010-09-13 18:33:08
當你覺得它實際上是一個問題時,只要回報價值並擔心表現。然後對其進行配置,以便您不必猜測。我搶先成爲[重複](http://stackoverflow.com/questions/3350385/how-to-return-an-object-in-c)。 – GManNickG 2010-09-13 18:34:23
我不會因爲幾個原因投票決定將其作爲一個副本來關閉它:(1)前面的問題有關於動態內存分配的細節不適用於這個問題,(2)這個問題是STL特定的,它可以調用其他成語,如插入迭代器。此外,STL的某些實現已經利用C++ 0x r值引用來最大限度地減少複製。該方法不適用於前面的問題。 – 2010-09-13 19:16:47