如何在 c++ stl 中获取列表中被推回的元素的地址,在常量时间内?

How to get the address of the element which is pushed back in the list, In constant time,in c++ stl?

本文关键字:元素 地址 时间 常量 stl c++ 获取 列表      更新时间:2023-10-16
listl; list::iterator lastElement; lastElement=l.end(( l.push_back(10(; cout<<"列表中元素 10 的地址是"<<&lastElement<<endl;

上述方式是在常量时间内获取列表最后一个元素地址的正确方法吗?我知道还有许多其他方法,但我想要一种在恒定时间内给出地址的方法。

如何在 c++ stl 中获取列表中被推回的元素的地址,在常量时间内?

推送元素后,使用std::list::back获取对该元素的引用。然后使用运算符 & 获取元素的地址(如果运算符重载,则使用std::addressof,这是不寻常的(。

上述方法是否是获取列表最后一个元素地址的正确方法

不。有几个问题:

  • std::list:end将迭代器返回到列表末尾之后的元素;而不是返回最后一个元素的迭代器。
  • 在将元素推入列表之前获取迭代器。迭代器不可能是稍后推送到列表的元素。
  • 你在迭代器上应用运算符和。结果是迭代器的地址;而不是迭代器指向的元素的地址。