映射到unordered_map中的对象,它是否被系统初始化

objected mapped to in unordered_map, is it initialized by the system?

本文关键字:是否 初始化 系统 对象 unordered map 映射      更新时间:2023-10-16

当使用unordered_map映射到一个结构体时,不知道被映射到的对象是否被系统初始化了。我使用Ubuntu 12.04 64位和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("%dn", mymap[argv[1]].a[1]);
    return 0;
}

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

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

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

您正在以下行中初始化您的std::unordered_map mymap

mymap["john"].a[0] = 10;
mymap["john"].a[1] = 20;
mymap["john"].a[2] = 30;