您的位置:首页 > 其它

STL学习笔记--各种容器的运用时机

2015-08-09 23:14 302 查看

如何选择最佳的容器类别?

缺省情况下应该使用vector。vector的内部结构简单,并允许随机存取,所以数据的存取十分方便灵活,数据的处理也够快。

如果经常要在序列的头部和尾部安插和移除元素,应采用deque。此外vector通常采用一个内存区块来存放元素,而deque采用多个区块,所以后者可内含更多的元素。

如果需要经常在容器的中段执行元素的安插、移除和移动,建议使用list。

如果经常需要根据某个准则来搜寻元素,应该使用set或multiset。

处理key/value pair,使用map。

注意:

(1) 关联式容器拥有自动排序能力,并不意味着它们在排序方面的执行效率高。事实上由于关联式容器每安插一个新元素,都要进行一次排序,所以速度反而不及序列式容器经常采用的方法:先安插所有的元素,然后调用排序算法进行一次完全排序。

(2) 迭代器失效的问题

vector 当内存重新分配时,所有迭代器失效。所以在安插或移除元素可能导致所有或部分迭代器失效。

deque 安插或移除操作,都将导致迭代器失效。

list 增加或删除元素不会导致其他迭代器失效。

map set 安插元素不会导致迭代器失效,删除元素,不会导致别的迭代器失效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: