哈希基础知识

目录

定义

哈希表的基本操作

初始化:

增删查改:

定义

哈希是一种将任意长度的输入(如字符串、文件、数据)通过哈希函数转换为固定长度输出的过程,其输出通常称为哈希值获哈希码

哈希表(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表示值

你可能感兴趣的:(多元,哈希算法,学习,算法)