在 C++ 中拆分和合并 std::list

splitting and merging std::list in C++

为什么std::lists不能是split/merged的常数时间?不就是链表吗?

我确定我遗漏了什么。能否请您解释一下这背后的原因?

这是要求 size() 为恒定时间的副作用(有人说这是一个相当不幸的副作用)。不可能同时具有恒定时间 size() 和恒定时间 splice() 的子列表。由于所有标准容器都需要具有恒定时间 size(),这必然要求子列表 splice() 是线性的。