std::list 的一些方法,可能还有其他 STL 容器,在 C++11 中添加了一个新的重载。我需要的是list::splice()。一种方法采用 list& 参数,另一种方法采用 list&& 参数。
我想知道有什么区别,我应该更喜欢哪个。
我查看了 libstdc++(GCC 编译器使用的标准 C++ 库)的实现,它在内部两种情况下都使用 list&& 版本。C++11 规范也没有说明这个问题。它只提供了 2 种方法,而没有解释其中的区别。
您不移动列表本身,也不移动节点(复制它们的指针似乎是将节点从一个列表移动到另一个列表的方式),那么这有什么关系呢?我只有一个想法,也许使用 list&& 就像对编译器的承诺,你不再需要另一个列表,编译器可以保存一些操作,因为它不必保持另一个列表有效......