map默认实现形式 map<T a T b > 即存在两个域,一个是键值,一个值域,其与set一样,元素只能唯一。
map插入元素的三种形式: map <int ,string> mapStu ;
mapStu.insert( pair<int ,string>(3 , "哈哈") ) ;
mapStu.insert( make_pair( 2 , "简单") ) ;
pair<map<int ,string>::iterator , bool> mypair = mapStu.insert( map<int string>::value_type(1 , "逗比") );
通过 mypair.first 即为当前位置的迭代器,
通过数组形式插入
mapStu[3] = "哈哈” ; 若没有3这个键值,则会创建3这个键值,并初始化,然后将初始化值修改为“哈哈” ;若已存在这个键值,则会用“哈哈”覆盖原先的值。
前三种方法返回的都是一个pair 。若插入的键值已经存在,则插入失败。
map.find (keyvalue) map与multimap均只能对键值进行查找或者计数
map.count(keyvalue) ,返回容器中key为keyelem的对组个数。对map来说,要么是0要么是1.对multimap来说值可能大于1
multimap与map的区别:multimao一个键值可以对应多个不同的值。
若容器中插入自定义对象时,若会出现深拷贝浅拷贝的情况,需提供无参构造函数,拷贝构造函数,以及重载赋值运算符。