unordered map allocator
时间: 2023-11-08 20:05:11 浏览: 38
unordered_map 是 C++ STL 中的一个容器,用于存储键值对。它的底层实现是哈希表,可以实现快速的查找、插入和删除操作。allocator 是 STL 中的一个分配器,用于管理内存的分配和释放。unordered_map 的默认分配器是 std::allocator,它使用 new 和 delete 进行内存的分配和释放。
如果需要自定义分配器,可以在定义 unordered_map 时指定第二个模板参数为自定义的分配器类型。例如:
```c++
#include <unordered_map>
#include <iostream>
template <typename T>
struct MyAllocator {
using value_type = T;
T* allocate(std::size_t n) {
std::cout << "MyAllocator: allocate " << n << " elements\n";
return static_cast<T*>(::operator new(n * sizeof(T)));
}
void deallocate(T* p, std::size_t n) {
std::cout << "MyAllocator: deallocate " << n << " elements\n";
::operator delete(p);
}
};
int main() {
std::unordered_map<int, int, std::hash<int>, std::equal_to<int>, MyAllocator<std::pair<const int, int>>> my_map;
my_map[1] = 2;
my_map[3] = 4;
for (const auto& [key, value] : my_map) {
std::cout << key << ": " << value << '\n';
}
}
```
输出:
```
MyAllocator: allocate 8 elements
1: 2
3: 4
MyAllocator: deallocate 8 elements
```