vector的back()函数

Posted viewcode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vector的back()函数相关的知识,希望对你有一定的参考价值。

back()函数

在x86平台,返回最后一个元素时应用如:

commentPtr &comment = comments.back().

正常。


但这种写法比较危险,comment是comments最后一个元素的引用。没有复制动作。

当临时变量的生命周期结束时,引用就悬空失效了。

比如:

而在arm平台,出现问题:得到的引用是空值或者是失效的值。

而采用

commentPtr comment = comments.back().

正常。


二者的区别在于,使用一个引用接受引用返回值,或者使用一个新变量接收引用返回值。

back()是一个引用。但“=”包含了一个复制的动作。

但仍然需要一个对象来接受。


arm平台编译器不能处理引用的方式,这也许是arm平台能力所限,或不支持这种方式。

以上是关于vector的back()函数的主要内容,如果未能解决你的问题,请参考以下文章

[STL] vector中函数emplace_back的实现原理

vector 是否有back()函数?

vector的back()函数

C++中push_back()函数

没有匹配函数调用‘std::vector::push_back(std::string&)’

push_back与构造函数