STL容器效率比较
变长一维数组,连续存储内存块,保留内存,堆内存分配;
支持[]操作,高效随机访问;
添加元素时,一般不需要分配内存空间,速度快;在中间或开始操作元素时,内存复制效率低;
vector高效的原因是配置的内存比所容纳的元素多,重新配置内存需要很多时间;
注:需要高效的立即访问,而不是插入和删除vector。
2、list
双向链表,内存空间可能不连续,无保留内存,堆内存分配;
不支持随机访问,开始和结束元素访问时间快,其他元素O(n);
插入和删除元素在任何位置都比较快,java视频教程的插入和删除不会使其他元素的每一个pointer,reference,iterator失效;
注:大量插入和删除,并立即访问list。
3、deque
双端队列在堆上分配内存,一堆间用指针连接几个元素;
支持[]操作,快速插入和删除元素,慢慢插入和删除元素,如list和vector的结合;
注:注意插入和删除,并立即存取折中使用deque。
4、set&multiset
按照给定的排序规则(默认按)有序集合,存放平衡二叉树less排序)对set排序中的数据;
set重复元素不允许,multiset中间运行重复元素;
不支持直接访问元素的操作;
搜索元素更快,因为它是自动排序;
元素值不能直接改变,否则会打乱原有的正确顺序,必须先删除旧元素,再插入新元素。
5、map&multimap
字典库,一个值映射成另一个值,并按照给定的排序规则存储平衡二叉树map中的key排序值;
map中的key不允许重复,multimap中的key允许重复;
根据已知的key值搜索元素快;
插入和删除操作缓慢。
更多材料及技术问题请咨询 张经理:13952444299 (微信同号)