小编jpb*_*123的帖子

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

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

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

对于我要添加的每个条目,我需要将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的默认初始化没有完成?

c++ unordered-map data-structures

3
推荐指数
1
解决办法
114
查看次数

如何在c ++中清除unordered_map的unordered_map?

我有一张地图如下图所示.

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()有效吗?当你在这里打电话时,内部到底发生了什么?有人可以提供一些内部细节吗?

c++ struct unordered-map

3
推荐指数
1
解决办法
103
查看次数

如何在c ++中只访问unordered_set的元素?

对于前者,

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的价值吗?

请澄清.

c++ unordered-set c++11

2
推荐指数
1
解决办法
1545
查看次数