我到处读到 back() 函数返回对最后一个元素的引用,但我有疑问。
我创建了一个包含元素 1,3,5 的向量。然后我编写了以下代码
int i = v.back();
i++;
在上述两个语句之后,我打印了向量并得到了输出 1 3 5 而当我增加引用时它应该是 1 3 6。
但是当我做 (v.back())++ 然后打印向量的值时,我得到了结果
1 3 6
我不明白输出的区别,在我看来应该是一样的。如果我错了,请纠正我。
该代码不会通过引用增加最后一个元素,它会增加最后一个元素的副本。改成:
int& i = v.back();
i++;
据此, back() 返回参考。要更改您的项目,请将其分配给引用或指针,如下所示:
int& iref = v.back();
int* iptr = &v.back();
这些变量的所有进一步修改都会导致向量元素的变化。
int i = v.back();
i++;
这将增加i
,而不是向量内的值。如果你想增加向量的最后一个元素,要么像你做的那样做(用(v.back())++
)或使用参考:
int& i = v.back();
i++;
// v.back is now +1