vector的back()函数

back()函数

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

commentPtr &comment = comments.back().

正常。


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

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

比如:

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

而采用

commentPtr comment = comments.back().

正常。


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

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

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


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

猜你喜欢

转载自blog.csdn.net/viewcode/article/details/40824669