Я использую 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 имеет отличную поддержку возможностей С++ 11, и я не вижу причин, по которым они не будут реализовывать этот.
Это ошибка в ссылке или в gcc?
В последнем случае:
Есть ли причина, почему такая фундаментальная функция С++ 11 будет отсутствовать так долго?
Есть ли третья возможность, например:
Могу ли я иметь gcc 4.8.1, но какую-то более старую версию стандартной библиотеки?