C++ STL 容器、迭代器、适配器

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等等

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 <unordered_set>  //包括unordered_set、unordered_multiset 底层数据结构为哈希表,无序
#include <unordered_map>  //包括unordered_map、unordered_multimap 底层数据结构为哈希表,无序
#include <hash_set>   //包括hash_set、multihash_set 底层数据结构为哈希表,无序,不建议使用
#include <hash_map>   //包括hash_map、multihash_map 底层数据结构为哈希表,无序,不建议使用
//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底层数据结构为链表,不提供按下标取值[]函数,开销太大

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值