stl之map、multimap

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一个键值可以对应多个不同的值。


若容器中插入自定义对象时,若会出现深拷贝浅拷贝的情况,需提供无参构造函数,拷贝构造函数,以及重载赋值运算符。

猜你喜欢

转载自blog.csdn.net/u013565071/article/details/79514977