stl中map的四种插入方法总结

来源:互联网 发布:映射网络驱动器不显示 编辑:程序博客网 时间:2024/06/08 09:53

stl中map的四种插入方法总结

方法一:pair
例:
map<int, string> mp;mp.insert(pair<int,string>(1,"aaaaa"));

方法二:make_pair
例:
map<int, string> mp;mp.insert(make_pair<int,string>(2,"bbbbb"));

方法三:value_type
例:
map<int, string> mp;mp.insert(map<int, string>::value_type(3,"ccccc"));

方法四:[]
例:
map<int, string> mp;mp[4] = "ddddd";

四种方法异同:
前三种方法当出现重复键时,编译器会报错,而第四种方法,当键重复时,会覆盖掉之前的键值对。

综合测试:
#include<iostream>#include<map>using namespace std;int main(){    map<int, string> mp;    //map的插入方法有4种    //insert返回值为pair   原型:typedef pair<iterator, bool> _Pairib    //方法1.pair 在插入重复键的情况下前三种方法类似,这里只测试第一种    pair<map<int,string>::iterator, bool> pair1 = mp.insert(pair<int,string>(1,"aaaaa11111"));    if (pair1.second == true)    {        cout<< "插入成功" <<endl;    }    else    {        cout<< "插入失败" <<endl;    }    pair<map<int,string>::iterator, bool> pair2 = mp.insert(pair<int,string>(1,"aaaaa22222"));    if (pair2.second == true)    {        cout<< "插入成功" <<endl;    }    else    {        cout<< "插入失败" <<endl;    }    //方法2.make_pair    mp.insert(make_pair<int,string>(3,"bbbbb33333"));    mp.insert(make_pair<int,string>(4,"bbbbb44444"));    //方法3.value_type    mp.insert(map<int, string>::value_type(5,"ccccc55555"));    mp.insert(map<int, string>::value_type(6,"ccccc66666"));    //方法4.[]    mp[7] = "ddddd77777";    mp[7] = "ddddd88888";    for (map<int,string>::iterator it = mp.begin(); it != mp.end(); it++)    {        cout<< it->first << "\t" << it->second <<endl;    }    cout<< "--------------------------------" <<endl;    //删除    while(!mp.empty())    {        map<int,string>::iterator it = mp.begin();        cout<< it->first << "\t" << it->second <<endl;        mp.erase(it);    }    return 0;}





原创粉丝点击