如何在c ++中使用unordered_map的unordered_map?

jpb*_*123 3 c++ unordered-map data-structures

我有以下数据结构问题?你能帮帮我吗?因此,当我将新数据项添加到此映射中时,我的要求是将此数据结构初始化为默认值.

我怎样才能有效地做到这一点?

对于我要添加的每个条目,我需要将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;
Run Code Online (Sandbox Code Playgroud)

尝试在代码下面运行.

    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;
Run Code Online (Sandbox Code Playgroud)

输出:

g ++ -std = c ++ 11 -o exe b.cc ./exe值:0,0,1518395376 ./exe值:0,0,-210403408 ./exe值:0,0,-1537331360 ./exe值:0,0,-915603664

那么a3的默认初始化没有完成?

Sla*_*ica 6

从C++ 11开始,你可以这样做:

struct a {
 int a1 = 0;
 int a2 = 0;
 int a3 = 0;
};
Run Code Online (Sandbox Code Playgroud)