我有一个带有此声明的 3D 数组:
unordered_map<int, unordered_map<int, unordered_map<int, T*>>> &ll=data[0];
如何创建、删除、检查其中的存在、遍历整个阵列?我知道几种方法,但它们有 100 行长而且效率很低。
我有一个带有此声明的 3D 数组:
unordered_map<int, unordered_map<int, unordered_map<int, T*>>> &ll=data[0];
如何创建、删除、检查其中的存在、遍历整个阵列?我知道几种方法,但它们有 100 行长而且效率很低。
通过索引创建和/或分配元素
[i][j][k]很容易:通过运算符的简单调用[]将为您创建所有内容通过索引检查是否存在
[i][j][k]也很容易,但更麻烦:也很容易通过:
按索引删除
[i][j][k]:取决于您想删除当前不需要的所有内容的热情程度,即 空子图。删除所有内容的最激进方法,检查被删除元素是否存在:如果您绝对确定该元素存在
[i][j][k],您的T不需要删除,并且您不想处理空子图的早期删除,那么一切都可以在一行中完成unordered_map但是,有可能您最好使用常规的“一层”而不是这样的“三层”unordered_map,其中三个数字(i, j, k)(std::tuple) 将作为键。它会让很多事情变得更容易。