Недавно я заметил, что некоторые люди отмечают, что std::list::size()
имеет линейную сложность.
Согласно некоторым источникам, это фактически зависит от реализации как в стандарте не сказано, какая сложность должна быть.
Комментарий в этой записи в блоге гласит:
Собственно, это зависит от того, какой STL вы используются. Microsoft Visual Studio V6 реализует size() как {return (_Size); }, тогда как gcc (по крайней мере, в версиях 3.3.2 и 4.1.0) делают это как {return std:: distance (begin(), end()); } первая имеет постоянную скорость, вторая имеет скорость o (N)
- Итак, я предполагаю, что для толпы VС++
size()
имеет постоянную сложность, поскольку Dinkumware вероятно, не изменит этот факт с VC6. Я здесь? - Как это выглядит в настоящее время в
gcc
? Если это действительно O (n), почему разработчики решили это сделать?