Должен ли std :: list :: size иметь постоянную сложность в C ++ 11?

я использую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, но некоторыестарая версия стандартной библиотеки?

Ответы на вопрос(1)

Ваш ответ на вопрос