使用list还是使用vector(deque)?
访问或者修改vector中的任意一项需要常数时间,如修改位置k上的项,可以使用下标运算符[] vec[k] ,下标运算符也可以用于deque中。然而访问链表中的任意一项需要耗费线性时间。链表迭代器只能是双向迭代器而不是随机迭代器,双向迭代器一次只能先前或向后前进一步,而向量的随机迭代器可以向前或向后任意个位置。
但是如果已经准确的定位了一个迭代器,在list中插入或者删除就只需要常数时间,而在双端队列和向量中则需要线性时间。从此可以看到list优于向量的一个动机:当需要在除了容器的尾部(对于双端队列而言是两头)进行多次插入和删除时候,适合使用链表list。
多个链表的合并只需要常数时间。
//把old_weights中的所有项放在weights的itr位置的前面,old_weights清空
//不论两个链表对象原先有多少项,该操作总是耗费常数时间。
weights.splice(itr,old_weights);