目录
定义
哈希表的基本操作
初始化:
增删查改:
哈希是一种将任意长度的输入(如字符串、文件、数据)通过哈希函数转换为固定长度输出的过程,其输出通常称为哈希值获哈希码
哈希表(Hash Table)是一种基于哈希函数实现的数据结构,用于高效存储和查找键值对。
1.默认初始化(创建空哈希表):std::unordered_map hashtable;
2.直接填充哈希表:std::unordered_map hashtable={{"apple",3},{"banana",5}};
3.复制另一个哈希表:std::unordered_map hashTable2(hashTable1);
4.转移另一个哈希表的内容 std::unordered_map hashTable2(std::move(hashTable1));
5.指定桶数量初始化 std::unordered_map hashTable(10);
6.自定义哈希函数和比较函数 std::unordered_map hashTable;
增加(插入)元素:hashtable.insert({"apple".3});
删除元素:
// 删除指定键的元素
hashTable.erase("apple");
// 删除所有元素
hashTable.clear();
查找元素: hashTable.find("banana"),hashTable.count("banana")
(两者的区别
find()方法是查找指定键是否存在,如果键存在,返回指向该键值对的迭代器;如果键不存在,返回 end() 迭代器。
#include
#include
#include
int main() {
std::unordered_map hashTable = {
{"apple", 3},
{"banana", 5},
{"orange", 2}
};
// 使用 find() 查找元素
auto it = hashTable.find("banana");
if (it != hashTable.end()) {
std::cout << "Found: " << it->first << " -> " << it->second << std::endl;
} else {
std::cout << "Not found" << std::endl;
}
return 0;
}
输出:
Found: banana -> 5
count则是记录了键在哈希表中出现的次数,但是由于在哈希表中键是唯一的,所以返回值只能是0或1,如果没有查找到则返回0
#include
#include
#include
int main() {
std::unordered_map hashTable = {
{"apple", 3},
{"banana", 5},
{"orange", 2}
};
// 使用 count() 查找元素
if (hashTable.count("banana") > 0) {
std::cout << "Found" << std::endl;
} else {
std::cout << "Not found" << std::endl;
}
return 0;
}
输出:
Found
)
修改元素:直接使用 [] 操作符:hashTable["banana"] = 10;
获取哈希表大小:使用size方法即可
检查哈希表是否为空:使用empty方法,若空返回1.若非空返回0;
遍历哈希表:
for (const auto& pair : hashTable) {
std::cout << pair.first << " -> " << pair.second << std::endl;
}
//first表示键,second表示值