在其中我编码我需要使用一个结构,因为这一个程序的动态数组:地图在C++
static std::unordered_map<size_t, int> map[N][M];
的问题是,我需要动态生成地图的大小,所以我会定义:
static std::unordered_map<size_t, int> **map
但我在分配它时出现问题。任何建议?
感谢
在其中我编码我需要使用一个结构,因为这一个程序的动态数组:地图在C++
static std::unordered_map<size_t, int> map[N][M];
的问题是,我需要动态生成地图的大小,所以我会定义:
static std::unordered_map<size_t, int> **map
但我在分配它时出现问题。任何建议?
感谢
你只需要分配的N * sizeof(std::unordered_map<size_t, int> *)
的空间。
我推荐你用std::vector
来管理你的阵列。您可以创建载体这样的向量:
std::vector<std::vector<std::unordered_map<size_t, int>>> map(M, std::vector<std::unordered_map<size_t, int>>(N));
for(int m = 0; m < M; ++m)
{
for(int n = 0; n < N; ++n)
{
map[m][n].emplace(0, 1);
}
}
如果你知道在编译时的大小,你可以使用std::array
这应该会更快。
static std::array<std::array<std::unordered_map<size_t, int>, M>, N> map;
['std :: vector'](http://en.cppreference.com/w/cpp/container/vector)有什么问题? –
至于你目前的问题与指针,请[阅读关于如何问好问题](http://stackoverflow.com/help/how-to-ask),并学习如何创建一个[最小,完整和可验证的例子](http://stackoverflow.com/help/mcve)。 –