[STL基础]顺序容器
2013-01-10 15:50
169 查看
容器
同一种类型对象的集合。这些容器的共有成员函数:empty()判断容器中是否有元素,max_size()容器中最多能装多少元素,swap()交换两个容器的内容。比较两个容器大小的运算符:=,<,<=,>,>=,==,!=
1.若两容器长度相同、所有元素相等,则两个容器就相等,否则为不等。
2.若两容器长度不同,但较短容器中所有元素都等于较长容器中对应的元素,则较短容器小于另一个容器。
3.若两个容器均不是对方的子序列,则取决于所比较的第一个不等的元素)
线性表
在实际应用中,线性表都是以字符串string,数组array,栈stack,队列queue,优先队列priority_queue,向量vector,列表list,双向队列deque等特殊线性表的形式来使用的。根据存储方式可分为顺序表,链表;链表又分为单链表,双链表,循环链表。顺序容器(vector,list,deque)
元素排列次序与元素值无关,而是由元素添加到容器里的顺序决定的。1.定义赋值,它们的定义赋值assign及用法完全相同。
2.都有返回表头元素表尾元素front(),back(),对于双向链表list和双向队列deque来说也只有一个表头和一个表尾,这里的双向是对元素可以双向添加删除而言的。
3.增加删除元素,都提供了在表尾增加删除元素方法push_back(),pop_back(),在任意位置增加删除元素方法insert(),erase(),全部删除元素clear()。
4.返回iterator和reverse_iterator 返回指向表头元素的指针begin(),返回表尾元素下一个位置end(),返回指向表尾元素的指针rbegin(),返回表头元素前一个位置rend()。
5.其他 获取长度size(),重置长度resize(),返回最大长度max_size(),两个容器互换swap(),判断是否为空empty()
vector
向量vector就是动态数组。顺序存储(说明可以用索引值,at()来进行元素访问,且其iterator可以+-n),连续存储元素。比list和deque多提供了获取容量capacity(),设置最小容量reserve()list
列表list是一个双向链表。链式存储(不可以用索引值来进行访问,且其iterator不可以+-n),由节点组成的双向链表,每个节点包含着一个元素。由于是双向链表,所以比vector多提供了在表头增加删除函数push_front(),pop_front(),此外比vector和deque多提供了排序函数sort(),队列合并merge()(注意:合并前需要排序),接合函数splice(),去重函数unique(),删除元素函数remove(),remove_if()deque
双向队列deque。顺序存储(说明可以用索引值,at()来进行元素访问,且其iterator可以+-n),连续存储指向不同元素的指针所组成的数组。由于是双向队列,所以比vector多提供了在表头增加删除函数push_front(),pop_front(),此外比vector少提供了逆序函数reverse()选择容器类型的法则
如果程序要求随机访问元素,则应使用 vector 或 deque 容器。如果程序必须在容器的中间位置插入或删除元素,则应采用 list 容器。
如果程序不是在容器的中间位置,而是在容器首部或尾部插入或删除元素,则应采用 deque 容器。
如果只需在读取输入时在容器的中间位置插入元素,然后需要随机访问元素,则可考虑在输入时将元素读入到一个 list 容器,接着对此容器重新排序,使其适合顺序访问,然后将排序后的 list 容器复制到一个 vector 容器。
相关文章推荐
- [STL基础]顺序容器
- c++ 提高4 map容器 共性机制 使用时机 比较| STL算法 算法基础仿函数 谓词 函数适配器 遍历算法
- STL(标准模板库)理论基础,容器,迭代器,算法
- STL顺序容器之双端队列deque
- 标准模板库 STL-2 编程题#6: priority queue(Coursera 程序设计与算法 专项课程3;容器中自定义排序顺序 MyCompare,判断质数)
- 顺序容器部分习题(基础)
- C++ STL 基础及应用(6) 容器
- 用STL输出顺序容器
- stl 顺序容器vector(priority_queue),顺序容器List,顺序容器deque(queue, stack)详解
- 【STL】顺序容器 — stack
- stl之list双向链表容器应用基础
- STL(标准模板库)理论基础,容器,迭代器,算法
- C++语法基础--顺序容器(四)--赋值和swap
- STL之顺序容器
- STL基础4:STL7个常用容器的比较
- STL之顺序容器和关联容器总结
- C++学习基础四——顺序容器和关联容器
- STL 笔记(一) 顺序容器 vector、list、deque
- STL学习小记--顺序容器
- **c++ stl 顺序容器: begin(),end()和front(),back()区别和使用**