我最初认为当一个队列被破坏时(例如,当它超出范围时),那么包含的元素应该被破坏(通过调用它们各自的析构函数)。类似地,当调用 pop() 时,队列中的第一个元素被破坏,队列的大小减 1。
但是,当我验证我的理解时,它似乎不正确......我使用了这样的东西
string& str = myQueue.front();
myQueue.pop();
(其中 myQueue 是一个包含字符串的非空队列)。
根据front()
规范,它应该返回对其持有的第一个元素的引用,如此处所示。
这意味着,当我弹出队列时,第一个元素消失了。事实证明,“str”之后仍然是一个有效的字符串!
有什么不对?
谢谢!