Я думаю, что ваше определение "тривиальное" не соответствует определению автора кода.
Если size
не сохранено, я бы ожидал begin
и end
для хранения и size
для вычисления разности двух, и этот код должен быть встроен.Таким образом, мы в основном говорим о двух (близлежащих) обращениях к памяти и вычитании вместо одного обращения к памяти.
Для большинства практических целей оба они тривиальны, и если автор стандартной библиотеки считает, что результатчто вычисления не стоит кэшировать, тогда лично я с радостью приму их мнение.Но автор этого комментария к коду может думать иначе.
Стандарт IIRC где-то говорит, что size
"должно" быть O (1), не уверен, что это в тексте для последовательностей или для контейнеров.Я не думаю, что это где-либо указывает, что это должно быть для vector
.Но даже если мы прочтем это как необязательное требование, здесь есть фундаментальная проблема QOI - что же я делаю, оптимизируя свой код для такой плохой реализации за счет обычных реализаций?реализация, по-видимому, потому, что они хотят , чтобы их код работал медленно.Кто я такой, чтобы судить иначе?; -)
Также возможно , что автор кода профилировал с использованием ряда реализаций end-begin
и измерил значительное улучшение путем кэширования размера.Но я думаю, что это менее вероятно, чем то, что автор слишком пессимистичен в отношении наихудшего случая, когда его код должен обработать.