C++ Hash算法与数据去重

发布时间:2024-11-20 10:45:34 作者:小樊
来源:亿速云 阅读:82

在C++中,哈希算法(Hash Algorithm)是一种将任意长度的输入(也称为预映射)通过散列函数变换成固定长度输出的过程。哈希算法在数据去重、查找、插入等操作中具有高效性。

以下是一个简单的C++哈希算法示例,用于实现数据去重:

#include <iostream>
#include <vector>
#include <unordered_set>

// 简单的哈希算法示例
unsigned int simpleHash(const std::string& input) {
    unsigned int hash = 0;
    for (char c : input) {
        hash = (hash * 31 + c) % 1000000; // 使用31作为乘数,1000000作为模数
    }
    return hash;
}

int main() {
    std::vector<std::string> data = {"apple", "banana", "orange", "apple", "grape", "banana"};

    // 使用unordered_set进行数据去重
    std::unordered_set<unsigned int> uniqueHashes;
    for (const std::string& item : data) {
        uniqueHashes.insert(simpleHash(item));
    }

    // 输出去重后的哈希值
    std::cout << "Unique hashes:" << std::endl;
    for (unsigned int hash : uniqueHashes) {
        std::cout << hash << std::endl;
    }

    return 0;
}

在这个示例中,我们首先定义了一个简单的哈希算法simpleHash,它接受一个字符串输入并返回一个哈希值。然后,我们使用std::unordered_set来存储去重后的哈希值。unordered_set会自动处理重复元素,只保留唯一的哈希值。最后,我们输出去重后的哈希值。

需要注意的是,这个简单的哈希算法可能会产生碰撞(两个不同的输入具有相同的哈希值)。在实际应用中,你可能需要使用更复杂的哈希算法,如MurmurHash、CityHash等,以降低碰撞的可能性。

推荐阅读:
  1. 有哪些C++陷阱与套路
  2. C++中位图和布隆过滤器的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:C++中Hash表扩容时机选择

下一篇:C++ STL Hash表扩容策略

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》