gpt4 book ai didi

c++ - 动态 int * 数组作为 C++ 映射的键

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:15 25 4
gpt4 key购买 nike

我有一些动态 int * 数组,我想将其用作 unordered_map 的键。我不太清楚我应该如何声明键类型,所以它实际上是整个数组的值。

此外,要为数组释放内存,我是否使用 map.clear()

例子:

unordered_map<??, int> frequency;

while (some_condition) {

int *my_array = new int[size];
putSomeValuesToArray(my_array);
frequency[my_array]++;
}

// to deallocate memory for the arrays in frequency?

最佳答案

重要:如果您在 STL 容器中使用动态分配的对象,那么要释放内存,您需要遍历容器并调用 delete (或 delete[])明确。

我强烈建议从 int* 移动至 std::vector<int> ,那么您将不再有内存所有权的问题。


为了声明一个键,将类型作为模板参数传递:

std::unordered_map<int*, Foo>
std::unordered_map<std::vector<int>, Foo>

当然,对于 unordered_map您可能需要一个特定的 Hash参数,它从 Key 派生哈希值你通过了。

关于c++ - 动态 int * 数组作为 C++ 映射的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7145494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com