应该使用empty()形式,理由很简单:
empty()对所有的标准容器都是常数时间操作,而size()对于list耗费的是线性时间。
介绍list的拼接操作splice:
list<int> list1;
list<int> list2;
...
// 把list2中从第一个含5的节点到最后一个含10的所有节点移动到list1的末尾
// base()见第28条
list1.splice(list1.end(), list2,
find(list2.begin(), list2.end(), 5),
find(list2.rbegin(), list2.rend(), 10).base());