C++ C++;
在我正在编写的程序中,我需要使用如下结构:C++ C++;,c++,hashmap,dynamic-memory-allocation,C++,Hashmap,Dynamic Memory Allocation,在我正在编写的程序中,我需要使用如下结构: static std::unordered_map<size_t, int> map[N][M]; static std::无序映射[N][M]; 问题是我需要动态生成地图的大小,因此我将定义: static std::unordered_map<size_t, int> **map static std::无序映射**映射 但我在分配上有问题。有什么建议吗 谢谢您只需要分配N*sizeof(std::unordered
static std::unordered_map<size_t, int> map[N][M];
static std::无序映射[N][M];
问题是我需要动态生成地图的大小,因此我将定义:
static std::unordered_map<size_t, int> **map
static std::无序映射**映射
但我在分配上有问题。有什么建议吗
谢谢您只需要分配
N*sizeof(std::unordered\u map*)的空间
您只需要分配N*sizeof(std::unordered\u map*)的空间
我建议您使用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::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而不是vector。这样,编译器可以对代码进行更好的优化。在这种情况下,我知道运行时的大小。使用向量方法,我找到了一个解决方案<代码>静态标准::矢量图代码>
map.resize(列的数量,标准::向量(行的数量))
@Chaosit添加了一条注释。这只是对答案的一个小补充-如果您在编译时知道数组的大小,我建议使用std::array而不是vector。这样,编译器可以对代码进行更好的优化。在这种情况下,我知道运行时的大小。使用向量方法,我找到了一个解决方案<代码>静态标准::矢量图代码>map.resize(列的数量,标准::向量(行的数量))
@Chaosit添加了一条评论。