为什么 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)。部分拼接需要知道传输了多少元素,以便它可以更新计数。如果没有,它只需要更新接缝元素上的指针。