STL学习笔记--各种容器的运用时机
2024-10-19 13:20:46
如何选择最佳的容器类别?
- 缺省情况下应该使用vector。vector的内部结构简单,并允许随机存取,所以数据的存取十分方便灵活,数据的处理也够快。
- 如果经常要在序列的头部和尾部安插和移除元素,应采用deque。此外vector通常采用一个内存区块来存放元素,而deque采用多个区块,所以后者可内含更多的元素。
- 如果需要经常在容器的中段执行元素的安插、移除和移动,建议使用list。
- 如果经常需要根据某个准则来搜寻元素,应该使用set或multiset。
- 处理key/value pair,使用map。
注意:
(1) 关联式容器拥有自动排序能力,并不意味着它们在排序方面的执行效率高。事实上由于关联式容器每安插一个新元素,都要进行一次排序,所以速度反而不及序列式容器经常采用的方法:先安插所有的元素,然后调用排序算法进行一次完全排序。
(2) 迭代器失效的问题
vector 当内存重新分配时,所有迭代器失效。所以在安插或移除元素可能导致所有或部分迭代器失效。
deque 安插或移除操作,都将导致迭代器失效。
list 增加或删除元素不会导致其他迭代器失效。
map set 安插元素不会导致迭代器失效,删除元素,不会导致别的迭代器失效。
最新文章
- my links
- img图片自适应div盒子,前提是不要把盒子的高给写死了,就是不要写高,如下
- 浅析JS中的模块规范(CommonJS,AMD,CMD)////////////////////////zzzzzz
- cocostudio 1.6
- RDVTabBarController的基本使用 以及tabbar的防止双点击方法
- Ubuntu+Redis主从配置
- iOS关于打包出错
- C与C++
- (转)Free函数的参数一定要是malloc返回的那个指针
- 动态规划——最长公共子序列(LCS)
- 编程思想之——";人是活的,程序是死的";
- sqlmap详细使用 [精简]
- python之总体理解
- Day8 面向对象反射 item方法 打印对象信息__str__ 构析方法__del__ 程序的异常处理
- PhoenixFD插件流体模拟——UI布局【Interaction】详解
- mvc webapi路由重写
- python特殊成员函数
- Ubuntu系统下添加程序启动器
- windows上完美的X-server服务器软件:MobaXterm
- Linux技术进阶示意图