gpt4 book ai didi

c++ - list.back 是否检索到未更改的引用?

转载 作者:行者123 更新时间:2023-11-30 01:59:12 24 4
gpt4 key购买 nike

This消息来源说:

[list::back()] returns a reference to the last element in the list container.

有人可以验证这绝对意味着它是对实际元素内容的引用而不是对最后一个元素的引用,如果 list 可能会变成不同的元素展开。

换句话说,如果列表发生变化,则存储来自 back 的引用然后不仍然指向当前 back ,即它不是对 back 的引用,而是对 back 在调用时存储的内容的引用,对吗?

最佳答案

std::list<T>::back被定义为具有以下操作语义:

{ auto tmp = a.end();
--tmp;
return *tmp; }

也就是说,它获取最后一个元素的迭代器,然后取消引用它以获取元素本身。然后它以 std::list<T>::reference 的形式返回,定义为 T& .

所以是的,您在最后一个位置获得了对对象本身的引用。对于它总是引用最后一个元素,当一个新元素被添加到列表的末尾时,引用必须以某种方式自动更改它所引用的对象,但引用不能被重新绑定(bind)。您可能认为解决这个问题的方法是让新的最后一个元素覆盖之前的最后一个元素和要移动的之前的最后一个元素,但这会使 std::list 无效。 s 迭代器。从 std::list 中插入和删除被定义为不使迭代器无效。

关于c++ - list.back 是否检索到未更改的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16507624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com