我正在使用gcc 4.8.1,经过数小时调试一个可怕的神秘性能问题后,我发现它std::list::size
实际上是作为对std::distance
.
/** Returns the number of elements in the %list. */
size_type
size() const _GLIBCXX_NOEXCEPT
{ return std::distance(begin(), end()); }
这让我感到惊讶,因为参考资料说std::list::size的复杂性应该是恒定std::distance
的,而std::list::iterator
.
我真的很困惑,因为我认为 gcc 对 C++11 特性有很好的支持,而且我认为他们没有理由不实现这个。
这是参考还是 gcc 中的错误?
在后一种情况下:
有什么理由为什么这么久会丢失这样一个基本的 C++11 功能?
是否有第三种可能性,例如:
我可以有 gcc 4.8.1 但有一些旧版本的标准库吗?