我有以下数据结构问题?你能帮帮我吗?因此,当我将新数据项添加到此映射中时,我的要求是将此数据结构初始化为默认值.
我怎样才能有效地做到这一点?
对于我要添加的每个条目,我需要将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的默认初始化没有完成?
我有一张地图如下图所示.
struct B {
int b1;
int b2;
int b3;
};
struct A {
B a1;
B a2;
};
unordered_map<int, unordered_map<int, A>> outer_map;
Run Code Online (Sandbox Code Playgroud)
我用一些元素填充了这个inner_map,每个内部map对象也初始化了几个元素.
所以我的问题是如何清除outer_map,以便我可以新填充数据?
outer_map.clear()有效吗?当你在这里打电话时,内部到底发生了什么?有人可以提供一些内部细节吗?
对于前者,
unordered_set<int> s ;
s.insert(100);
Run Code Online (Sandbox Code Playgroud)
如何从s获得100的价值?
来自http://www.cplusplus.com/reference/unordered_set/unordered_set/begin/ ,
请注意,
unordered_set对象不保证哪个特定元素被视为其第一个元素.但是,在任何情况下,从开始到结束的范围都涵盖容器(或存储桶)中的所有元素,直到无效.
所以s.begin()不会总是给我100的价值吗?
请澄清.