我在这里有链接 push(x)
10 int
s,然后 pop()
11 并且大小不是 0,也不是一个异常(exception),而是一个巨大的数字(可能是 == std::numeric_limit<size_type>::max()
)。我认为这是内部表示简单地执行 size--
的结果并且不检查已经 empty()
案件。这似乎是 stdc++ 库中的错误。
最佳答案
它被称为“未定义的行为”。为了节省实现时间(不检查它是否已经为空),实现将简单地递减,尽管“没有什么可以递减”。不要那样做(在另一个实现中它可能不会那样做,所以绝对不要依赖它做任何有意义的事情)。由于它是未定义的,它也可能会在您的调制解调器上拨出到澳大利亚,删除您的硬盘或导致应用程序崩溃。或者别的……
关于c++ - std::queue::size() 在 pop() of size() == 0 之后可以返回一个巨大的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28245673/