C++ STL中的back函数

C++ STL中的back函数,c++,stl,back,C++,Stl,Back,我到处都读到back()函数返回对最后一个元素的引用,但我有一个疑问 我用元素1,3,5创建了一个向量 int i = v.back(); i++; 在上面两个语句之后,我打印了向量,得到了输出1 3 5 然而,当我增加引用时,它应该是1 3 6 但是当我执行(v.back())++然后打印向量的值时,我得到了结果 1 3 6 我不明白产出的不同,我认为应该是一样的。 如果我错了,请更正。代码不会通过引用增加最后一个元素,而是增加最后一个元素的副本。改为: int& i = v.ba

我到处都读到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++;
这将增加
i
,而不是向量内的值。如果要增加向量的最后一个元素,请按照所做的操作(使用
(v.back())++
)或使用引用:

int& i = v.back();
i++;
// v.back is now +1
根据,back()返回引用。要更改项目,请将其指定给引用或指针,如下所示:

int& iref = v.back();
int* iptr = &v.back();

所有这些变量的进一步修改都会导致向量元素的变化。

好吧,也许我错了,但正如前面所说的back()函数返回一个引用,因此i是对最后一个元素的引用。那么&i需要什么呢。感谢您,
back()
确实返回了一个引用,但这并不意味着
i
是一个隐式引用。您必须将
i
声明为引用,否则它将复制
back()
的返回值所引用的对象。@user1139048:back()返回引用,但通过
int i=v.back()您只需使用此引用后面的值初始化局部变量(独立于向量)<代码>int&i=v.back()存储引用本身,因此可以通过i更改向量元素。
int& iref = v.back();
int* iptr = &v.back();