C++ STL 容器、迭代器、适配器
来源:互联网 发布:微信订餐软件 编辑:程序博客网 时间:2024/05/17 21:38
1、容器vector,list,deuqe是C++STL中三种基本容器实现,它们不可能互为实现同时又不损失效率
2、stack和queue则都可以在这三种基本容器序列基础上实现,所以没有定义为独立的容器,而只作为基本容器适配器
3、容器适配器所提供的是原来容器的一个受限的界面,适配器不提供迭代器
4、所有stack和queue是用deque基本容器作为实现方式的
5、关联容器(查找表)包括set、map、hash_set、hash_map,主要用于查找,提供迭代器
适配器主要有容器适配器、迭代器适配器和函数适配器
1、容器适配器有stack、queue、priority_queue
2、迭代器适配器有back_insert_iterator, front_insert_iterator, inser_iterator, reverse_iterator, istream_iterator,
ostream_iterator, istreambuf_iterator, ostreambuf_iterator等等
vector函数: push_back、pop_back、back、front、按下标取值[]
list函数: push_back、pop_back、push_front、pop_front、back、front
deque函数: push_back、pop_back、push_front、pop_front、back、front、按下标取值[]
stack函数: push、pop、top
queue函数: push、pop、back、front
priority_queue函数: push、pop、top
//vector底层数据结构为数组,不提供前端插入、删除函数,开销太大
//list底层数据结构为链表,不提供按下标取值[]函数,开销太大
2、stack和queue则都可以在这三种基本容器序列基础上实现,所以没有定义为独立的容器,而只作为基本容器适配器
3、容器适配器所提供的是原来容器的一个受限的界面,适配器不提供迭代器
4、所有stack和queue是用deque基本容器作为实现方式的
5、关联容器(查找表)包括set、map、hash_set、hash_map,主要用于查找,提供迭代器
适配器主要有容器适配器、迭代器适配器和函数适配器
1、容器适配器有stack、queue、priority_queue
2、迭代器适配器有back_insert_iterator, front_insert_iterator, inser_iterator, reverse_iterator, istream_iterator,
ostream_iterator, istreambuf_iterator, ostreambuf_iterator等等
3、函数适配器
#include <stdio.h>//容器#include <vector>#include <list> //双向链表#include <deque>#include <array> //固定大小的数组#include <forward_list> //单向链表//容器适配器#include <stack>#include <queue> //含queue、priority_queue//迭代器#include <iterator>//迭代器适配器#include <iterator> //含back_insert_iterator、front_insert_iterator等等//关联容器(查找表)#include <set> //包括set、multiset 底层数据结构为红黑树,有序#include <map> //包括map、multimap 底层数据结构为红黑树,有序#include <hash_set> //包括hash_set、multihash_set 底层数据结构为哈希表,无序#include <hash_map> //包括hash_map、multihash_map 底层数据结构为哈希表,无序#include <unordered_set> //包括unordered_set、unordered_multiset 无序#include <unordered_map> //包括unordered_map、unordered_multimap 无序//multi表示元素可重复using namespace std;struct cmpIntGreat { bool operator()(int first, int second) { return first > second; }};int main(){ priority_queue<int, deque<int>, less<int>> q1; //默认最大堆 priority_queue<int, deque<int>, greater<int>> q2; set<int, less<int>> s1; //默认升序 set<int, greater<int>> s2; set<int, cmpIntGreat> s3; //自写compare函数(注意与sort的compare函数比较) //迭代器使用示例 vector<int> ivec(10,1); for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter)//end()中不含有效元素 { *iter=2; //使用 * 访问迭代器所指向的元素 } return 0;}
vector函数: push_back、pop_back、back、front、按下标取值[]
list函数: push_back、pop_back、push_front、pop_front、back、front
deque函数: push_back、pop_back、push_front、pop_front、back、front、按下标取值[]
stack函数: push、pop、top
queue函数: push、pop、back、front
priority_queue函数: push、pop、top
//vector底层数据结构为数组,不提供前端插入、删除函数,开销太大
//list底层数据结构为链表,不提供按下标取值[]函数,开销太大
0 0
- C++ STL 容器、迭代器、适配器
- c++STL(五)容器适配器
- stl 容器适配器、迭代器适配器和函数适配器讲解
- STL里的容器、迭代器、算法、适配器
- STL容器适配器
- STL容器适配器:stack
- STL容器适配器:queue
- STL容器适配器:priority_queue
- C++ STL 容器适配器
- STL 容器适配器
- C++ STL 容器适配器
- C++ STL 容器适配器
- STL容器适配器
- STL 之容器适配器
- STL容器适配器
- STL容器适配器
- STL之容器适配器
- 【STL容器学习】-容器适配器
- 从无到有系列之Hive-jdbc测试操作hive03
- Postman 安装及使用入门教程
- DSP28335 ecap使用
- 自己总结的web前端知识体系大全【欢迎补充】
- 深入浅出UML类图
- C++ STL 容器、迭代器、适配器
- 对ByteArrayInputStream/ByteArrayOutputStream类的应用里的transform函数的复用
- MFC——10.网络编程基础
- Android开源项目分类汇总(三) ViewPager 、Gallery、GridView、ImageView、ProgressBar
- python webdriver 简单框架
- 多线程: 自定义操作(模仿 SDWebImage)
- Android让dialog充满整个屏幕
- TOJ 2839.Dream Counting
- 微信公众号开发--微信JS-SDK分享到朋友圈和分享给朋友