C++ 容器及选用

【一】 STL容器

(1) list (链表 ), 内存不连续,任何位置高校插入删除

(2) vector (数组),内存连续,只有在尾部插入时,不用移动元素,随机访问

(3) deque(双端队列)两端插入删除效率高,但是中间的操作代价较大,随机访问

 

【注】

若要经常在中间插入删除 ,list ;

若经常随机访问, vector和deque ,支持下表操作。

 

关联容器

(4) map<k, v> 键类型严格弱排序

构造函数 : 

map<k, v>  m;

map<k, v>  m(m2);

map<k, v>  m(m2.beg, m2.end);

】map[key] = value; 若下标所示的键不存在,则自动创建,精简程序!

insert(pair)

 find(key)    返回迭代器

count(key)  存在返回1,否则为0

 

(5)  set

 不重复元素的集合,使用平衡树实现,查找效率 log(n)

 操作类似于map

 

另外,multimap , multiset.

 

【二】 Boost

 

STL容器中没有哈希容器!

unordered_set 用哈希函数实现,复杂度为常数,具体与哈希函数有关

unordered_map 

 

 

 

 

 

posted @ 2011-12-07 16:13  Keosu  阅读(270)  评论(0编辑  收藏  举报