que aprendió la complejidad de deque::insert()
del C++ estándar de 2003 (capítulo 23.2.1.3) de la siguiente manera:Complejidad de STL deque :: insert()
En el peor de los casos, la inserción de un solo elemento en una deque lleva tiempo lineal en el mínimo de la distancia desde el punto de inserción hasta el comienzo del deque y la distancia desde el punto de inserción hasta el final del deque.
Siempre entiendo la implementación de stl deque como una colección de fragmentos de memoria. Por lo tanto, una inserción solo afectará a los elementos en la misma porción de memoria que la posición de inserción. Mi pregunta es, ¿qué significa el estándar por "lineal en el mínimo de la distancia desde el punto de inserción hasta el comienzo del deque y la distancia desde el punto de inserción hasta el final del deque"?
Mi comprensión es porque el estándar C++ no impone una determinada implementación de deque. La complejidad es solo en general para el peor de los casos. Sin embargo, en la implementación real en los compiladores, es lineal a la cantidad de elementos en un fragmento de memoria, que puede variar según el tamaño de los diferentes elementos.
Otra suposición podría ser que, como insert()
invalidará todos los iteradores, deque necesita actualizar todos los iteradores. Por lo tanto, es lineal.
Peor caso será O (n/2) – Pubby