c++ - 查找 std::hash_map 与 std::vector 的速度
问题描述
在下面的代码中,使用std::hash_map
. 我假设在std::hash_map
查找过程中增加了需要哈希函数的额外步骤,但是哈希函数可以像向量查找一样快吗?
bool isUniqueChars(const string &str){
if (str.length() > 128){
return false;
}
vector<bool> char_set(128);
for (int i = 0; i < str.length(); i++){
int val = str[i];
if (char_set[val]){
return false;
}
char_set[val] = true;
}
return true;
}
解决方案
与所有与性能相关的问题一样,您应该衡量差异以回答您自己的问题。幸运的是,使用这个简单的代码就足够简单了。
散列数据结构具有摊销常数复杂性,即每次操作的平均时间只有在您执行许多操作时才是常数。所以我预计unordered_set
会比vector
.
请注意,您也可以使用std::bitset<128>
- 它的开销很小,例如vector
,并且可能更具描述性 - 它的大小是恒定的,但vector
可以调整大小。
推荐阅读
- polymer - Polymer 2 - 纸张输入前缀未显示
- html - Bootstrap 4 手风琴标题向左浮动和向右浮动 div 使高度相同并垂直对齐
- xml - 具有重复元素和父节点的 XSLT 转换
- c# - C# Form,尝试将随机图片框更改为带有计时器的随机图像
- symfony - 如何在 Symfony 中使用多条路由和多参数转换器
- python - 在python中覆盖字符串的最后N个字符
- android - 如何从 Firebase 检索密钥并将其映射到其模型实例
- r - 开发闪亮的应用程序作为一个包,如何记录功能?
- reporting-services - 以编程方式从 Dynamics CRM 2016 SQL 数据库检索自定义报告
- php - 合并来自 MySQL 记录的数组