据我所知,拼接应该从一个列表中剪下一块并将其放入另一个列表中。我不明白以下代码的用途(取自http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01477_source.html第 112 行,我正在阅读一些标准库以更好地理解各种数据结构):
inline void
__slist_splice_after(_Slist_node_base* __pos, _Slist_node_base* __head)
{
_Slist_node_base* __before_last = __slist_previous(__head, 0);
if (__before_last != __head)
{
_Slist_node_base* __after = __pos->_M_next;
__pos->_M_next = __head->_M_next;
__head->_M_next = 0;
__before_last->_M_next = __after;
}
}
似乎 __head 的两端都被切断了,并且没有在任何地方结束。