为什么 C++11 中的 STL list size() 复杂度为 O(1),它是如何计算的?
Why STL list size() complexity is O(1) in C++11, how it is calculated?
不应该是O(n)吗,因为要计算双向链表的大小,还要遍历?
在元素旁边存储长度允许 O(1) size()
。
缺点是部分 splice
是 O(移动元素)而不是 O(1)。部分拼接需要知道传输了多少元素,以便它可以更新计数。如果没有,它只需要更新接缝元素上的指针。
不应该是O(n)吗,因为要计算双向链表的大小,还要遍历?
在元素旁边存储长度允许 O(1) size()
。
缺点是部分 splice
是 O(移动元素)而不是 O(1)。部分拼接需要知道传输了多少元素,以便它可以更新计数。如果没有,它只需要更新接缝元素上的指针。