STL-unordered系列容器自定义哈希函数
概述:
由于在STL中,有关于hash的数据结构值针对于基础数据类型如int, string等提供了hash模板,
因此如果想要使用自定义类,那么我们需要自定义hash函数!
重写hash函数和equal_to函数
1 |
|
效率
map与unordered_map的int类型测试
插入范围 | 查询范围 | map插入 | map查询 | unordered_map插入 | unordered_map查询 |
---|---|---|---|---|---|
100 | 100 | 0ms | 0ms | 1ms | 0ms |
1000 | 1000 | 1ms | 1ms | 1ms | 0ms |
10000 | 10000 | 8ms | 7ms | 15ms | 5ms |
100000 | 100000 | 70ms | 58ms | 92ms | 20ms |
1000000 | 1000000 | 588ms | 532ms | 688ms | 118ms |
set与unordered_set的int类型测试
插入范围 | 查询范围 | set插入 | set查询 | unordered_set插入 | unordered_set查询 |
---|---|---|---|---|---|
100 | 100 | 0ms | 0ms | 1ms | 0ms |
1000 | 1000 | 1ms | 1ms | 2ms | 0ms |
10000 | 10000 | 8ms | 6ms | 13ms | 3ms |
100000 | 100000 | 80ms | 60ms | 109ms | 33ms |
1000000 | 1000000 | 807ms | 599ms | 945ms | 327ms |
结论
数据量小于100或者查询次数小于插入次数没必要使用unordered容器
STL-unordered系列容器自定义哈希函数
https://www.inktea.eu.org/2022/2141.html