C++11无序关联容器有哪几种

发布时间:2021-11-29 13:43:28 作者:iii
来源:亿速云 阅读:176

C++11无序关联容器有哪几种

C++11标准引入了无序关联容器(Unordered Associative Containers),这些容器基于哈希表实现,提供了平均常数时间复杂度的插入、删除和查找操作。与有序关联容器(如std::mapstd::set)不同,无序关联容器不维护元素的顺序,而是通过哈希函数将元素映射到桶中。C++11标准中定义了四种无序关联容器,分别是std::unordered_setstd::unordered_multisetstd::unordered_mapstd::unordered_multimap

1. std::unordered_set

std::unordered_set是一个无序集合,它存储唯一的元素。与std::set不同,std::unordered_set不保证元素的顺序,而是通过哈希函数将元素映射到桶中。std::unordered_set的主要特点包括:

示例代码

#include <unordered_set>
#include <iostream>

int main() {
    std::unordered_set<int> uset = {1, 2, 3, 4, 5};

    uset.insert(6);
    uset.erase(3);

    for (const auto& elem : uset) {
        std::cout << elem << " ";
    }
    return 0;
}

2. std::unordered_multiset

std::unordered_multiset是一个无序多重集合,它允许存储重复的元素。与std::unordered_set类似,std::unordered_multiset也不保证元素的顺序,而是通过哈希函数将元素映射到桶中。std::unordered_multiset的主要特点包括:

示例代码

#include <unordered_set>
#include <iostream>

int main() {
    std::unordered_multiset<int> umset = {1, 2, 2, 3, 4, 4, 5};

    umset.insert(6);
    umset.erase(2);

    for (const auto& elem : umset) {
        std::cout << elem << " ";
    }
    return 0;
}

3. std::unordered_map

std::unordered_map是一个无序映射容器,它存储键值对。与std::map不同,std::unordered_map不保证键值对的顺序,而是通过哈希函数将键映射到桶中。std::unordered_map的主要特点包括:

示例代码

#include <unordered_map>
#include <iostream>

int main() {
    std::unordered_map<std::string, int> umap = {{"apple", 1}, {"banana", 2}, {"cherry", 3}};

    umap.insert({"date", 4});
    umap.erase("banana");

    for (const auto& pair : umap) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }
    return 0;
}

4. std::unordered_multimap

std::unordered_multimap是一个无序多重映射容器,它允许存储多个具有相同键的键值对。与std::unordered_map类似,std::unordered_multimap也不保证键值对的顺序,而是通过哈希函数将键映射到桶中。std::unordered_multimap的主要特点包括:

示例代码

#include <unordered_map>
#include <iostream>

int main() {
    std::unordered_multimap<std::string, int> ummap = {{"apple", 1}, {"apple", 2}, {"banana", 3}};

    ummap.insert({"banana", 4});
    ummap.erase("apple");

    for (const auto& pair : ummap) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }
    return 0;
}

总结

C++11标准引入了四种无序关联容器:std::unordered_setstd::unordered_multisetstd::unordered_mapstd::unordered_multimap。这些容器基于哈希表实现,提供了平均常数时间复杂度的插入、删除和查找操作。与有序关联容器不同,无序关联容器不维护元素的顺序,而是通过哈希函数将元素映射到桶中。根据具体需求,可以选择合适的无序关联容器来存储和操作数据。

推荐阅读:
  1. redis的锁有哪几种
  2. python序列类型有哪几种

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

c++

上一篇:适宜做简单搜索的MySQL数据库全文索引是怎样的

下一篇:C/C++ Qt TreeWidget单层树形组件怎么应用

相关阅读

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

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