objected映射到unordered_map,它是由系统初始化的吗?

时间:2015-10-18 03:34:59

标签: c++ unordered-map

当使用unordered_map映射到结构时,想知道映射到的对象是否由系统初始化。我使用的是Ubuntu 12.04 64bit和g ++ 4.7.3。谢谢。

#include <iostream>
#include <unordered_map>

struct strDum {
    uint a[3];
    int id;
};

int main (int argc, char *argv[])
{
    int i;
    char cmd[100];
    std::unordered_map<std::string,strDum> mymap;
    mymap["john"].a[0] = 10;
    mymap["john"].a[1] = 20;
    mymap["john"].a[2] = 30;
    printf("%d\n", mymap[argv[1]].a[1]);
    return 0;
}

2 个答案:

答案 0 :(得分:1)

如果在使用std::unordered_map::operator[]时执行了插入操作,则映射值为value-initialized

  

返回对映射到等效于的键的值的引用   键,如果此键尚不存在则执行插入。

     

如果执行插入,则映射值将进行值初始化   (默认为类类型构造,否则为零初始化)和   返回它的引用。

答案 1 :(得分:0)

您正在以下行

初始化std::unordered_map mymap
mymap["john"].a[0] = 10;
mymap["john"].a[1] = 20;
mymap["john"].a[2] = 30;