1.一般情况下,使用vector。
2.如果程序有很多小的元素,且空间的额外开销很重要,则不要使用list或forward_list;
3.要求随机访问元素,使用vector或者deque;
4.如果程序要在中间插入或者删除元素,应该使用list或者forward_list;
5.如果程序要求在头尾位置插入或删除元素,但不会在中间位置进行删除操作,则使用deque;
6.如果程序只有在读取输入时才需要在容器中间位置插入元素,随后需要速记访问元素,则
--- 首先,确定是否真的需要在容器中间位置添加元素。档处理输入数据时,通常可以很容易地向vector追加数据,然后再调 用标准库的sort()函数来重排容器中的元素,从而避免在中间位置添加元素。
--- 如果必须在中间位置插入元素,考虑在输入阶段使用list,一旦输入完成,将list中的内容拷贝到一vector中。
如果既要随机访问元素,又要在容器中间插入元素,那么,抓住list、forward_list的随机访问特性与vector、deque插入/删除元素的相对特性,根据实际情况来进行选择。
tips : 使用list和vector公共操作——迭代器,不使用下表操作符,避免随机访问,这样在比要的时vector和list都非常的方便。
参考文献:《C++primer》第5版,P293.