STL容器比较和基本对象

STL容器一览


list:双向链表,没有排序

vector:数组,没有排序
deque:双端容器
map:红黑树,按key排序
multimap:允许重复键值的红黑树
set:排序,不允许重复键值的红黑树
multiset:排序,允许重复键值的红黑树

 

基于各种容器的内部实现原理,可以比较好的理解他们之间函数的差异:

 

 

STL容器相关的其他主要对象


pair

pair是一个值对,first和second可以是不同的类型,一般用来表示map的一个节点。

pair<int, char> p;

p.first = 1;

p.second = 'a';

 

iterator

迭代器用来遍历一个容器,隐藏和业务无关的数据结构(树、数组、链表……)

map<int, string>:: iterator it

 

reverse_iterator

反向迭代器,用来反向遍历一个容器

 

const_iterator

常量迭代器,对于一个常量迭代器,只能使迭代器指向别的元素,不能修改指向的元素。而const iterator恰好相反,它必须被初始化指向一个元素,之后不能改变指向,但可以修改指向元素的值。类似于const int * pint * const p的区别。

 

const_reverse_iterator

常量反向迭代器

 

key_compare函数对象

用来比较两个key值,适用于set, multiset, map, multimap。

map<int, char>::key_compare kc = mymap.key_comp();

if( kc(1, -1) )

  cout << "ok";

 

value_compare函数对象

对于set和multiset,和key_compre相同。

对于map和multimap,用来判断迭代器A是否越过了迭代器B。

map<int, char>::value_compare vc = mymap.value_comp();

if( vc( mymap.begin(), mymap.end() ) )

  cout << "ok";

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值