【发布时间】:2020-05-26 14:45:01
【问题描述】:
std::list::splice(std::const_iterator pos, std::list&& other) 是否保证将other 留空?
【问题讨论】:
标签: c++ linked-list stl c++14
std::list::splice(std::const_iterator pos, std::list&& other) 是否保证将other 留空?
【问题讨论】:
标签: c++ linked-list stl c++14
是的,std::list::splice 保证。
(强调我的)
1) 将所有元素从其他元素转移到
*this。元素插入到pos指向的元素之前。 容器other在操作后变为空。如果 other 引用与*this相同的对象,则行为未定义。
来自标准,[list.ops]/4:
(强调我的)
效果:在
position之前插入x的内容,x变为空。指向x的移动元素的指针和引用现在指的是相同的元素,但作为*this的成员。引用移动元素的迭代器将继续引用它们的元素,但它们现在表现为指向*this的迭代器,而不是指向x的迭代器。
【讨论】:
other版本的函数?
const;那么我们不能修改它(并使其为空)。