关于c++顺序容器小结(一)---概述
2015-11-09 17:24
288 查看
最近又再啃c++11primer,不停一遍又一遍啃也不是办法,就总结一下。
什么是顺序容器:所谓容器就一些特定数据类型对象的集合,就像家里装东西的箱子一样吧它们装在一起便于管理。而顺序容器就是提供控制元素的存储和访问顺序,通俗的说就是可以按照顺序把东西放到箱子里,而取的时候也可以按照顺序去拿。
顺序容器的种类: vector(可变数组),deque(双端队列支持[]运算符),list(双向链表不支持[]运算符),forward_list(单向链表不支持[]运算符),string(保存字符的可变数组支持[]运算符),array(固定大小数组支持[]运算符)。他们都定义在自己的头文件中。
基本特性:
vector:支持[]运算符,在尾部之外的位置插入删除操作效率低;
deque:支持[]运算符,在头尾位置操作都很快;
list:不支持[]运算符,在任意位置操作都快;
forward_list:只支持单项顺序访问,在任意位置操作都快;
array:支持[]运算符,不能添加火删除元素;
string:支持[]运算符,在尾部操作快;
选择容器的基本原则:
*一般用vector,除非有特殊用意;
*如果元素很小,且额外开销很重要,则不用list火forward_list;
*需要随机访问就用vector或deque;
*如果要在容器中间插入或删除应使用list或forward_list;
*如果只在容器头尾添加或删除应用deque;
*如果只有在读取输入时才需要在容器中间插入元素,随后需要随机访问元素,现在vector中添加然后调用sort函数从而避免在中间位置添加元素;如果 必须在中间插入则可先输入到list中然后在拷贝到vector中;
总之,容器的选择视程序的操作而定,占主导的操作决定了容器的选择;
什么是顺序容器:所谓容器就一些特定数据类型对象的集合,就像家里装东西的箱子一样吧它们装在一起便于管理。而顺序容器就是提供控制元素的存储和访问顺序,通俗的说就是可以按照顺序把东西放到箱子里,而取的时候也可以按照顺序去拿。
顺序容器的种类: vector(可变数组),deque(双端队列支持[]运算符),list(双向链表不支持[]运算符),forward_list(单向链表不支持[]运算符),string(保存字符的可变数组支持[]运算符),array(固定大小数组支持[]运算符)。他们都定义在自己的头文件中。
基本特性:
vector:支持[]运算符,在尾部之外的位置插入删除操作效率低;
deque:支持[]运算符,在头尾位置操作都很快;
list:不支持[]运算符,在任意位置操作都快;
forward_list:只支持单项顺序访问,在任意位置操作都快;
array:支持[]运算符,不能添加火删除元素;
string:支持[]运算符,在尾部操作快;
选择容器的基本原则:
*一般用vector,除非有特殊用意;
*如果元素很小,且额外开销很重要,则不用list火forward_list;
*需要随机访问就用vector或deque;
*如果要在容器中间插入或删除应使用list或forward_list;
*如果只在容器头尾添加或删除应用deque;
*如果只有在读取输入时才需要在容器中间插入元素,随后需要随机访问元素,现在vector中添加然后调用sort函数从而避免在中间位置添加元素;如果 必须在中间插入则可先输入到list中然后在拷贝到vector中;
总之,容器的选择视程序的操作而定,占主导的操作决定了容器的选择;
相关文章推荐
- Python嵌入C/C++ (Python核心编程)
- c++ 智能指针用法详解
- C语言strstr函数
- 2.c/c++程序员面试宝典-操作符
- C语言strchr函数
- 10道C++输出易错笔试题收集
- C语言单链表实现19个功能完全详解
- c语言学习之基础知识点介绍(十九):内存操作函数
- leetcode笔记:Edit Distance
- C++常用string函数
- 去除C++String的首尾空格
- 贡献15本经典C、C++、MFC、VC++教程,都是pdf完整版的
- C语言笔记(枚举)
- C++笔记(一)
- C++ 智能指针
- C++面试笔试题目(选2)(字符串,原码反码补码)
- c++因为函数名字修饰引起的链接错误
- C语言基础-二维数组
- C++基础——有关引用的问题
- python 中main与c语言的不同