为什么 STL 容器适配器堆栈中的 top 返回一个 const 引用?

The*_*Zoo 0 c++ containers stl

容器适配器的规范stacktop应该返回一个const引用。为什么?

queue'sfront和也会发生同样的问题back。我可以看到在这种情况下priority_queue,可修改的访问可能会干扰优先级,从而导致“类不变量”,但我不知道为什么您不能修改topastackfrontbacka 的原因queue

为规范最实用的代理是cppreference.com: 顶部

您可以看到它返回 a const_reference,它是const对适应的底层容器所持有的值的引用。

eer*_*ika 5

为什么top在 STL 容器适配器中stack返回const引用?

因为该成员函数是常量限定的,并且容器适配器传播常量性。

有一个非 const 限定的重载返回可变引用。

const 重载存在的原因是您可以访问 const 堆栈的顶部元素。

引用最新标准草案:

[stack.defn]

reference         top()             { return c.back(); }
const_reference   top() const       { return c.back(); }
Run Code Online (Sandbox Code Playgroud)