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