STL容器比较和基本对象

STL容器一览

list:双向链表,没有排序

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

 

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

 

STL容器比较和基本对象_第1张图片

 

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";

 

 

你可能感兴趣的:(数据结构,list,vector,String,iterator)