C++ STL中的back函数
我到处都读到back()函数返回对最后一个元素的引用,但我有一个疑问 我用元素1,3,5创建了一个向量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
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();