#include "iostream"
#include "map"
using namespace std;
class CGirl
{
public:
string m_name;//超女年龄。
int m_age;//超女年龄。
CGirl(const string name,const int age):m_name(name),m_age(age)
{
cout<<"两个参数的构造函数。\n";
}
CGirl(const CGirl& g):m_name(g.m_name),m_age(g.m_age)
{
cout<<"拷贝构造函数。\n";
}
};
int main()
{
//1) map();//创建一个map容器。
map<int,string>m1;
//2)map(initializar_list<pair<K,V>>il)//使用统一初始化列表。
map<int,string> m2({{8,"冰冰"},{3,""},{1,"幂幂"},{7,"金莲"},{5,"西瓜"}});
for (auto &val:m2) {
cout<<val.first<<";"<<val.second<<" ";
}
cout<<endl;
map<string,string>m({{"08","冰冰"},{"03","西施"},{"01","幂幂"},{"07","金莲"},{"05","西瓜"}});
cout<<"m[08]="<<m["08"]<<endl;//显示key为08的元素的value
cout<<"m[09]="<<m["09"]<<endl;//显示key为09的元素的value,key为09的元素不存在,将添加新的节点
m["07"]="花花";//把key为07的value修改为花花。
m["12"]="小乔";//将添加新的键值对。
for (auto &val:m) {
cout<<val.first<<","<<val.second<<" ";
cout<<endl;
}
map<int,string>mm;
mm.insert({{8,"冰冰"},{3,"西施"}});
mm.insert({pair<int,string>( 1,"幂幂"), make_pair(7,"金莲"),{5,"西瓜"}});
auto ret1=mm.insert(pair<int,string>(18,"花花"));
if(ret1.second==true)cout<<"插入成功!"<<endl<<"l"<<ret1.first->second<<endl;
else cout<<"插入失败\n";
//void insert(iterator first,iterator);//用迭代器插入一个区间的元素
if (ret1.second==true) cout<<"插入成功: <<"<<ret1.first->first <<","<<ret1.first->first<<endl;
else cout<<"插入失败。\n";
//4)<iterator,bool>emplace(...);
//将创建新键值对所需的数据作为参数传入,map容器将直接构造元素。
//返回值pair:first是插入元素的得带器,second是插入结果。
for(auto &val:m)
cout<<val.first<<","<<val.second<<" ";
cout<<endl;
map<int,CGirl>mmm;
mmm.emplace(piecewise_construct, forward_as_tuple(8), forward_as_tuple("冰冰",18));//一次构造函数
for (const auto &val:mmm) {
cout<<val.first<<";"<<val.second.m_name<<val.second.m_name<<" ";
}
cout<<endl;
return 0;
}
输出:
1;幂幂 3; 5;西瓜 7;金莲 8;冰冰
m[08]=冰冰
m[09]=
01,幂幂
03,西施
05,西瓜
07,花花
08,冰冰
09,
12,小乔
插入成功!
l花花
插入成功: <<18,18
01,幂幂 03,西施 05,西瓜 07,花花 08,冰冰 09, 12,小乔
两个参数的构造函数。
8;冰冰冰冰
发表回复