std::list::splice 函数是 STL 中 list 模板类的一个成员函数,它可以用来将一个 list 中的元素插入到另一个 list 中。这个函数会将第一个 list 中指定位置上的元素移动到第二个 list 指定位置上。
void splice (const_iterator position, list& x); void splice (const_iterator position, list&& x); void splice (const_iterator position, list& x, const_iterator i); void splice (const_iterator position, list&& x, const_iterator i); void splice (const_iterator position, list& x, const_iterator first, const_iterator last); void splice (const_iterator position, list&& x, const_iterator first, const_iterator last);
第一个参数 position 是指定插入的位置,第二个参数 x 是要插入的 list 对象。第三个参数 i 代表第二个 list 中起始插入位置。第四个和第五个参数则代表第二个 list 中插入的元素的范围。
std::list l1 = {1, 2, 3}; std::list l2 = {4, 5};
l1.splice(l1.begin(), l2);
这段代码会将 l2 中的元素 4 和 5 插入到 l1 的开头。
这个函数不会改变第一个 list 和第二个 list 的大小,并且不会拷贝元素,而是直接移动元素。因此比起 insert 函数,splice 函数更高效。