C++ std::list::splice(std::const_iterator pos,std::list&&other)`是否保证将`other`保留为空?

C++ std::list::splice(std::const_iterator pos,std::list&&other)`是否保证将`other`保留为空?,c++,linked-list,stl,c++14,C++,Linked List,Stl,C++14,std::list::strippestd::const_iterator pos、std::list&other是否保证将other留空?是的,保证为 重点矿山 1将所有元素从其他元素转移到*中。在pos指向的元素之前插入元素。另一个容器在操作后变空。如果other引用与*this相同的对象,则该行为未定义 根据标准: 重点矿山 效果:在位置之前插入x的内容,x变为空。现在,指向x的移动元素的指针和引用引用引用了这些相同的元素,但它们是*this的成员。引用移动元素的迭代器将继续引用它们的元素

std::list::strippestd::const_iterator pos、std::list&other是否保证将other留空?

是的,保证为

重点矿山

1将所有元素从其他元素转移到*中。在pos指向的元素之前插入元素。另一个容器在操作后变空。如果other引用与*this相同的对象,则该行为未定义

根据标准:

重点矿山

效果:在位置之前插入x的内容,x变为空。现在,指向x的移动元素的指针和引用引用引用了这些相同的元素,但它们是*this的成员。引用移动元素的迭代器将继续引用它们的元素,但它们现在的行为就像*this的迭代器,而不是x的迭代器

是的,这是保证的

重点矿山

1将所有元素从其他元素转移到*中。在pos指向的元素之前插入元素。另一个容器在操作后变空。如果other引用与*this相同的对象,则该行为未定义

根据标准:

重点矿山

效果:在位置之前插入x的内容,x变为空。现在,指向x的移动元素的指针和引用引用引用了这些相同的元素,但它们是*this的成员。引用移动元素的迭代器将继续引用它们的元素,但它们现在的行为就像*this的迭代器,而不是x的迭代器


目的地将以空列表开始吗?然后你就可以看名单了


否则,如果您不确定,您可以将源列表添加到目标列表中,然后添加到源列表中。

目标列表是否会以空列表开始?然后你就可以看名单了


否则,如果您不确定是否可以将源列表添加到目标列表和源列表中。

为什么存在该函数的R值其他版本?@Museful否则无法使用右值列表调用它?但l值引用参数不能绑定到右值吗?@Museful否,右值不能绑定到左值引用。@Museful它不能是常量;那么我们就不能修改它并使其为空。为什么R值函数的其他版本存在?@Museful否则不能用右值列表调用它?但是l值引用参数不能绑定到右值吗?@Museful不,右值不能绑定到左值引用。@Museful它不能是常量;那么我们就不能修改它并使其为空。