基础不牢,地动山摇。
提供一对一的hash
第一个可以称为关键字(key),每个关键字只能在map中出现一次;第二个可能称为该关键字的值(value);自动建立key - value的对应。key 和 value可以是任意你需要的类型。
两种插入方式:
string s1="hahaha",s2="lalala"; //方法一:使用下标插入 m[s1] = 1; m[s2] = 2; //方法二:定义键值对 pair<string, int> p1; p1 = make_pair(s1, 1); pair<string, int> p2(s2, 2); //直接构造键值对 m.insert(p1); //使用insert接口 m.insert(p2);调用:
map<string, int>::iterator it; for (it = m.begin(); it != m.end(); it++) { //遍历 cout << it->first << " " << it->second << endl; }find(key) 返回一个迭代器
empty() 判断map是否为空。为空的话返回真。
size() 返回map的长度
clear() 清空
map.count(Key) 检查key是否存在 (返回值为1或者0,1返回存在,0返回不存在,返回的是布尔类型的值,因为在map类型中所有的数据的Key值都是不同的,所以被count的数要么存在1次,要么不存在)
reserve和resize是vector里两个很重要的方法,有效地使用这两个方法可以减少reallocate memory的次数,提高程序的性能。(这两个函数的区别即容器的capacity(容量)与size(长度)的区别)
resize:
resize(n) 调整容器的长度大小,使其能容纳n个元素。如果n小于容器的当前的size,则删除多出来的元素。否则,添加采用值初始化的元素。resize(n,t) 多一个参数t,将所有新添加的元素初始化为t。reserve:
reserve(n) 预分配n个元素的存储空间。pair 默认对first升序,当first相同时对second升序;
排好序且无重复
insert() 插入元素begin() 返回set容器第一个元素的迭代器end() 返回一个指向当前set末尾元素的下一位置的迭代器.clear() 删除set容器中的所有的元素empty() 判断set容器是否为空size() 返回当前set容器中的元素个数count() 用来查找set中某个某个键值出现的次数find() 返回给定值值得定位器,如果没找到则返回end()lower_bound(key_value) 返回第一个大于等于key_value的定位器upper_bound(key_value) 返回最后一个大于等于key_value的定位器
string的部分用法:
https://www.cnblogs.com/lanclot-/p/11142202.html