如何在 c++ 中使用 unordered_maps 的unordered_map?
How to use unordered_map of unordered_maps in c++?
我有以下数据结构问题?你能帮帮我吗? 所以我的要求是在将新数据项添加到此地图时将此数据结构初始化为默认值。
我怎样才能有效地做到这一点?
我需要 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 。/.exe 值:0、0、1518395376 。/.exe 值:0、0、-210403408 。/.exe 值:0、0、-1537331360 。/.exe 值:0、0、-915603664
所以没有为 a3 进行默认初始化?
从 C++11 开始,您可以这样做:
struct a {
int a1 = 0;
int a2 = 0;
int a3 = 0;
};
您可以向结构添加默认构造函数:
struct a {
a() : a1(0), a2(0), a3(0) { }
...
};
struct A {
A() : A1(), A2() { }
...
};
然后,当您添加新结构时,您可以执行以下操作:
big_map[5][7] = A();
你可以像类一样给构造函数,并将其初始化为 0
struct a
{
int a1;
int a2;
int a3;
a() : a1(0), a2(0), a3(0)
{
}
}
相关文章:
- 调用'maps::size(char [20], char&)'没有匹配函数,但我认为我的方法有
- 比较键和值 std::maps
- 是否可以<int>在一行中将向量值分配给 std::unordered<int,std::vector<int>>?
- 缓存Google Maps供离线使用
- Unordered_Map of Maps or Priority_Queues?
- Qt Webview Google Maps Caching
- 尝试将 QGeoSearchReply 的结果添加到 blackberry 10 Cascades (C++、QT & QML) 中的 maps::D ataProvider
- "std::map with mutexes"与并行插入、查找、擦除之间是否有任何速度测试"libcds maps (Michael Hashmap and Split Order List)"?
- unordered map -在c++ std::unordered_map中预分配桶
- Qt Maps (QML)应用程序窗口是空白的
- 为什么 Bing Maps for Visual Studio 2013 C++无法打开?
- 使用Maps和make_pair编译错误