Я думаю, вы немного достигли того, как вы понимаете значение областей сложности. Вы пытаетесь провести различие между «линейным временем» и «линейной сложностью», в чем я не уверен, имеет большой смысл.
Стандарт ясно, что вставка впереди постоянна, и я думаю, мы все согласны с этим. Последний отрывок просто говорит нам, что то, что каждая из этих «постоянных» операций включает внизу, просто не указано или не ограничено стандартом.
И это не является необычным. Любой алгоритм работает на некоторой основе абстракции. Даже если бы мы написали алгоритм, который сводился к отдельным машинным инструкциям, и мы сказали, что когда-либо было N машинных инструкций, сгенерированных нашим алгоритмом, мы бы go не исследовали бы, какого рода сложности каждая сложность имеет внутри процессора и добавить это в наши результаты. Мы бы не сказали, что некоторые операции в конечном итоге делают больше на квантовом молекулярном уровне, и поэтому наш алгоритм O (n) фактически равен O (N × M 3 ) или что-то подобное. Мы решили не учитывать этот уровень абстракции. И, если указанная сложность не зависит от входных данных алгоритма, это вполне нормально.
В вашем случае, размер перемещенных / скопированных внутренних векторов не очень важен, потому что они по сути не меняются по мере роста декы , число внутренних векторов делает, но размер каждого из них является независимым свойством. Таким образом, это не имеет значения при описании сложности вставки нового элемента во внешний вектор.
Изменяется ли фактическое время выполнения (которое можно было бы описать в некоторых алгоритмических терминах, если вы так выбрали) в зависимости от содержимого скопированных внутренних векторов? Ну конечно; естественно. Но это не имеет ничего общего с тем, как задача расширения внешнего вектора увеличивается в рабочей нагрузке по мере роста самого внешнего вектора.
Итак, в стандарте говорится, что он не будет копировать N или N 2 или даже log N внутренних векторов, когда вы помещаете еще один впереди; это говорит о том, что количество этих операций не будет меняться в масштабе по мере роста вашей deque. Также говорится, что для целей этого правила не имеет значения, что на самом деле включает в себя копирование / перемещение внутренних векторов или насколько они велики.
Анализ сложности не связан с производительностью. Анализ сложности о том, как производительность масштабируется.