【发布时间】:2018-06-01 15:59:48
【问题描述】:
我有以下数据结构问题?你能帮帮我吗? 所以我的要求是在我将新数据项添加到此映射中时将此数据结构初始化为默认值。
我怎样才能有效地做到这一点?
对于我要添加的每个条目,我需要将 a1、a2、a3 设置为零。
struct a {
int a1;
int a2;
int a3;
};
struct A {
struct a A1;
struct a A2;
};
unordered_map<int, unordered_map<int, struct A>> big_map;
尝试运行以下代码。
unordered_map<int, struct A> inner_map;
big_map[0] = inner_map;
struct A m;
big_map[0][0] = m;
cout << "Values: " << big_map[0][0].A1.a1 << ", " << big_map[0][0].A1.a2 << ", " << big_map[0][0].A1.a3 << endl;
输出:
g++ -std=c++11 -o exe b.cc 。/可执行程序 值:0、0、1518395376 。/可执行程序 值:0、0、-210403408 。/可执行程序 值:0、0、-1537331360 。/可执行程序 值:0、0、-915603664
所以没有为 a3 进行默认初始化?
【问题讨论】:
-
@SombreroChicken 不需要,在 c++11 插入映射后会导致默认初始化,即使类型没有构造函数,例如整数、浮点数等。
-
@KostasRim 这是通用的答案,不包括 C++11。但话说回来
unordered_map只是 C++11,所以你是对的。
标签: c++ data-structures unordered-map