我到處讀到back()函數返回最後一個元素的引用,但我有疑問。STL返回函數
我創建與元件1,3,5的載體resp.Then我上述兩個語句之後寫了下面的代碼
int i = v.back();
i++;
,我印刷載體和我得到的輸出1 3 5 而它應該是1 3 6,因爲我增加了參考。
但是當我做(v.back())++,然後打印矢量我得到的結果
1 3 6
我不明白,在輸出差的值,根據對我來說應該是一樣的。 如果我錯了,請糾正我。
我到處讀到back()函數返回最後一個元素的引用,但我有疑問。STL返回函數
我創建與元件1,3,5的載體resp.Then我上述兩個語句之後寫了下面的代碼
int i = v.back();
i++;
,我印刷載體和我得到的輸出1 3 5 而它應該是1 3 6,因爲我增加了參考。
但是當我做(v.back())++,然後打印矢量我得到的結果
1 3 6
我不明白,在輸出差的值,根據對我來說應該是一樣的。 如果我錯了,請糾正我。
該代碼不會通過引用增加最後一個元素,它將增加最後一個元素的副本。更改爲:
int& i = v.back();
i++;
int i = v.back();
i++;
這將增加i
,而不是矢量內的值。如果你想增加向量的最後一個元素,要麼是像你一樣(有(v.back())++
),或使用一個參考:
int& i = v.back();
i++;
// v.back is now +1
據this,回()返回引用。要更改您的項目將其分配給參考或指針,如下所示:
int& iref = v.back();
int* iptr = &v.back();
這些變量的所有進一步修改都會導致向量元素的更改。
好吧,也許我錯了,但作爲說back()函數返回一個引用,因此我是最後一個element.so的引用什麼是&我的需要。謝謝 – 2012-07-06 09:24:17
是的,我明白了,我是個傻瓜。非常感謝!! – 2012-07-06 09:27:20
是的,'back()'確實返回了一個引用,但是這並不會使''爲隱式引用。您必須聲明'i'作爲引用,否則它會複製'back()'返回值所引用的對象。 – hmjd 2012-07-06 09:27:56