transfer:list容器内部提供的迁移动作:将某连续范围的元素迁移到某个特定位置之前。
首先上list容器transfer操作的源码:
void transfer(iterator position,iterator first,iterator last)//将[first,last)之间的元素迁移到position之前
{
if (position != last)
{
(*(link_type((*last.node).prev))).next = position.node;
(*(link_type((*first.node).prev))).next = last.node;
(*(link_type((*position.node).prev))).next = first.node;
link_type tmp = link_type((*position.node).prev);
(*position.node).prev = (*last.node).prev;
(*last.node).prev = (*first.node).prev;
(*first.node).prev = tmp;
}
}
这里主要的核心思想就是更正前后链接。具体如下: