C++(17):map的初始化

关于C++中关联容器map的初始化/赋值有好几种方式

 
1.直接赋值法

    map<string, int> m1;
    m1["def"] = 2;


 2.用insert添加

    map<string, int> m2;
    m2.insert({ "abc", 1 });    //使用这种就可以了
    //其他形式和方式
    m2.insert(make_pair(string("def"), 2));
    m2.insert(pair<string, int>(string("ghi"), 3));

3.列表初始化

    map<string,int> m3 = {
    {"string",1}, {"sec",2}, {"trd",3}
    };

    map<string,string> m4 = {
    {"first","second"}, {"third","fourth"},
    {"fifth","sixth"}, {"begin","end"}
    };

注:列表初始化适用于c++11和以上的版本,低于11的版本则无法使用

如果需要插入一个key并且不指定value,可以直接用下面这种写法,看起来不是一个表达式,不过map对“[]”进行了重载,本质上仍然是表达式,其含义是如果存在该变量则直接返回对应value,如果不存在则增加该key值并自动初始化为0

map<string,int> a;    //a是string到int的空map
a["new"];        //"new"是新增的key

不过需要注意的是,如果value类型为数型,即使像上面一样没有进行赋值操作,也一般会默认赋值为——0,

如果value是string或char类型,则默认为空,没有默认值,因此,string或char可以用列表初始化进行不给value赋值的添加key

string<string,string> m5 = {
    {"first",""}, {"second",""}
    {"third",""}, {"fourth",""}
};


 


多类型嵌套的map赋值

map的定义支持多层不同类型的嵌套,形如:

map<int, map<string, vector<double>>>  testmap;

这种多层嵌套的map,也是可以直接进行赋值操作的,如:

map<int, map<string, vector<double>>>  testmap;
testmap[3]["three"].push_back(3.75);

  • 63
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值