为什么STL list size()的复杂性在C++;11、如何计算?

为什么STL list size()的复杂性在C++;11、如何计算?,list,c++11,stl,time-complexity,List,C++11,Stl,Time Complexity,它不应该是O(n),因为要计算双链表的大小,我们必须遍历它。在元素旁边存储长度允许O(1)size() 这样做的缺点是部分元素是O(移动的元素),而不是O(1)。部分拼接需要知道传输了多少个元素,以便更新计数。如果没有,则只需要更新seam元素上的指针。如果移动所有元素,则可以从存储的大小进行更新。第一个重载是O(1)。第二个重载移动了一个元素,因此您也知道如何更新O(1)中的计数。您能想到一个实现,它在每次通过插入、删除、合并、清除等操作修改列表时跟踪列表的大小,以便size()的时间复杂度为

它不应该是O(n),因为要计算双链表的大小,我们必须遍历它。

在元素旁边存储长度允许O(1)
size()


这样做的缺点是部分元素是O(移动的元素),而不是O(1)。部分拼接需要知道传输了多少个元素,以便更新计数。如果没有,则只需要更新seam元素上的指针。

如果移动所有元素,则可以从存储的大小进行更新。第一个重载是O(1)。第二个重载移动了一个元素,因此您也知道如何更新O(1)中的计数。您能想到一个实现,它在每次通过插入、删除、合并、清除等操作修改列表时跟踪列表的大小,以便
size()
的时间复杂度为O(1)吗?