映射到unordered_map中的对象,它是否被系统初始化
objected mapped to in unordered_map, is it initialized by the system?
当使用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;
相关文章:
- 是否可以初始化不可复制类型的成员变量(或基类)
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 对象初始化中是否允许指向此成员的指针?
- 初始值设定项列表是否只接受使用相同类型的值初始化变量?
- 是否可以防止省略聚合初始化成员?
- 我们是否需要为 C++ 中的多个函数初始化多个模板?
- 为什么需要检查 GLAD 或 GLEW 是否正确初始化?
- C++:带有大括号初始化列表的函数调用表达式 - 标准是否规定在单个元素列表的微不足道的情况下忽略大括号?
- 是否可以使用右值初始化数据成员?
- 当 map 是一个整数数组并且由 operator[] 创建时,它是否初始化其映射类型
- C++,检查当我无法使用 NULL/0 时是否初始化了变量
- make_unique值是否初始化字符数组
- new[] 是否初始化内置数组
- 此零是否初始化数据项
- 检查变量是否初始化
- 是否初始化基元-c++
- std::map 中基元类型的值是否初始化
- Windows 的线程本地存储是否初始化值?
- 不管是否初始化,使用sizeof(p[0])真的无害吗?