为什么vector <>和list <>容器中的push_back不返回对插入元素的引用?

Sam*_*rsa 14 c++ containers stl

我意识到我可以通过调用获取迭代器引用,back()但为什么不返回它push_back()呢?是出于性能原因吗?或者是由于异常安全(类似于为什么pop_back()不返回弹出值)?在任何一种情况下,请解释.

Nic*_*las 16

各种insert函数返回迭代器的原因很简单:调用者不一定知道如何获得该元素的迭代器.map::insertset::insert返回一个因为否则,调用者将不得不搜索该元素.

当你这样做时vector::push_back,你知道插入元素的位置.是的--vector.end().你不必搜索它; 它始终是那个位置.你可以在恒定的时间内获得它,并且非常快速的恒定时间.

因此,返回用户已经知道的东西真的没有意义.

  • 用户知道*并且可以获得恒定时间*. (3认同)