当前位置: 首页 > wzjs >正文

mip织梦手机网站模板做互助盘网站多少钱

mip织梦手机网站模板,做互助盘网站多少钱,云集网站建设公司,建设部网站的诚信平台C map 和 unordered_map 的区别和联系 map 和 unordered_map 都是 C 标准库中关联容器,用于存储键值对。它们的主要区别在于底层实现和性能特性,联系在于它们都提供了键值对的存储和访问功能。 区别: 特性mapunordered_map底层实现红黑树 …

C++ map 和 unordered_map 的区别和联系

mapunordered_map 都是 C++ 标准库中关联容器,用于存储键值对。它们的主要区别在于底层实现和性能特性,联系在于它们都提供了键值对的存储和访问功能。

区别:

特性mapunordered_map
底层实现红黑树 (Red-Black Tree)哈希表 (Hash Table)
排序键是有序的 (默认按键的 < 运算符排序)键是无序的
查找复杂度O(log n) (n 是元素数量)平均 O(1),最坏 O(n) (取决于哈希函数和冲突)
插入复杂度O(log n)平均 O(1),最坏 O(n) (取决于哈希函数和冲突)
删除复杂度O(log n)平均 O(1),最坏 O(n) (取决于哈希函数和冲突)
内存占用通常比 unordered_map 略小通常比 map 略大 (需要额外的空间用于哈希表)
迭代器迭代器按键的顺序遍历元素迭代器遍历元素的顺序是不确定的
适用场景需要键的有序性,例如范围查询,按顺序输出追求快速查找、插入和删除,不关心键的顺序
哈希函数N/A (使用 < 运算符进行比较)需要提供哈希函数 (或使用默认的 std::hash)

详细解释:

  • 底层实现:

    • map 使用红黑树作为底层数据结构。红黑树是一种自平衡的二叉搜索树,保证了在插入、删除和查找操作时,树的高度始终保持在 O(log n) 级别。
    • unordered_map 使用哈希表作为底层数据结构。哈希表通过哈希函数将键映射到桶 (bucket) 中,从而实现快速的查找。
  • 排序:

    • map 中的键是有序的,默认情况下按照键的 < 运算符进行排序。这意味着你可以按顺序遍历 map 中的元素。
    • unordered_map 中的键是无序的。元素的存储顺序取决于哈希函数和插入顺序。
  • 查找复杂度:

    • map 的查找复杂度为 O(log n),因为需要在红黑树中进行搜索。
    • unordered_map 的平均查找复杂度为 O(1),因为哈希表可以根据键直接定位到对应的桶。但是,在最坏情况下 (例如,所有键都哈希到同一个桶),查找复杂度会退化为 O(n)。
  • 插入和删除复杂度:

    • map 的插入和删除复杂度为 O(log n),因为需要在红黑树中进行调整。
    • unordered_map 的平均插入和删除复杂度为 O(1)。但是,在最坏情况下,插入和删除复杂度会退化为 O(n),并且可能需要重新哈希 (rehash) 以保持性能。
  • 内存占用:

    • map 的内存占用通常比 unordered_map 略小,因为它不需要额外的空间用于哈希表。
    • unordered_map 的内存占用通常比 map 略大,因为它需要额外的空间用于哈希表,并且可能需要预留一些空桶以减少冲突。
  • 迭代器:

    • map 的迭代器按键的顺序遍历元素。
    • unordered_map 的迭代器遍历元素的顺序是不确定的,取决于哈希函数和插入顺序。
  • 适用场景:

    • 如果你需要键的有序性,例如范围查询或按顺序输出,那么 map 是一个更好的选择。
    • 如果你追求快速查找、插入和删除,并且不关心键的顺序,那么 unordered_map 是一个更好的选择。
  • 哈希函数:

    • map 不需要提供哈希函数,因为它使用 < 运算符进行比较。
    • unordered_map 需要提供哈希函数,用于将键映射到桶中。你可以使用默认的 std::hash,也可以自定义哈希函数。

联系:

  • 都是关联容器: 它们都用于存储键值对,并提供基于键的访问功能。
  • 提供类似的操作: 它们都提供了 inserterasefindcount 等操作,用于插入、删除、查找和统计元素。
  • 都是模板类: 它们都是模板类,可以存储任意类型的键和值。

示例代码:

#include <iostream>
#include <map>
#include <unordered_map>
#include <string>int main() {// mapstd::map<std::string, int> myMap;myMap["apple"] = 1;myMap["banana"] = 2;myMap["orange"] = 3;std::cout << "map elements (ordered):" << std::endl;for (auto const& [key, val] : myMap) {std::cout << key << ": " << val << std::endl;}// unordered_mapstd::unordered_map<std::string, int> myUnorderedMap;myUnorderedMap["apple"] = 1;myUnorderedMap["banana"] = 2;myUnorderedMap["orange"] = 3;std::cout << "\nunordered_map elements (unordered):" << std::endl;for (auto const& [key, val] : myUnorderedMap) {std::cout << key << ": " << val << std::endl;}return 0;
}

总结:

选择 map 还是 unordered_map 取决于你的具体需求。如果你需要键的有序性,或者需要进行范围查询,那么 map 是一个更好的选择。如果你追求快速查找、插入和删除,并且不关心键的顺序,那么 unordered_map 是一个更好的选择。 在实际应用中,通常需要根据具体情况进行性能测试,以确定哪种容器更适合你的需求。


文章转载自:

http://n25JEhDq.rfmzs.cn
http://nttSRC8D.rfmzs.cn
http://QfHj7IMY.rfmzs.cn
http://JgSkJq4k.rfmzs.cn
http://8OwFWcZe.rfmzs.cn
http://X98ZFo5j.rfmzs.cn
http://RG3sxvBq.rfmzs.cn
http://wPcK6WjU.rfmzs.cn
http://GP7KNXWl.rfmzs.cn
http://O2Td4Dl4.rfmzs.cn
http://D3rmtIjY.rfmzs.cn
http://fjk4AQPC.rfmzs.cn
http://XgOsZFLG.rfmzs.cn
http://zOFrm9vw.rfmzs.cn
http://haRhDAvZ.rfmzs.cn
http://LZytplJY.rfmzs.cn
http://cbfbpTKy.rfmzs.cn
http://eQfEGrd5.rfmzs.cn
http://2NnOrsC1.rfmzs.cn
http://WpO09iRu.rfmzs.cn
http://XbPKA0sv.rfmzs.cn
http://3pOQxc3U.rfmzs.cn
http://G0m0wzFg.rfmzs.cn
http://6622Unn4.rfmzs.cn
http://TIAk2xcD.rfmzs.cn
http://ixKlXbUd.rfmzs.cn
http://PnCkKtlJ.rfmzs.cn
http://Ucjwalk2.rfmzs.cn
http://v7EMeAlz.rfmzs.cn
http://nQgJYK5n.rfmzs.cn
http://www.dtcms.com/wzjs/728798.html

相关文章:

  • 娄底做网站如何购买大量客户电话号码
  • 做网站 视频加载太慢蜘蛛搜索
  • 行业网站开发管理软件汽车配件网上商城
  • 网站规划书包括哪些方面深圳线上注册公司
  • 网站安全扫描工具如何提交百度收录
  • 临沂网站哪家好分众传媒电梯广告价格表
  • 帝国cms建网站如何自己开个网站平台
  • 如何查网站服务器速度网站开发要求有哪些
  • 网站建设协议书模板 完整版优化网站排名需要多少钱
  • 免费wap建站的网址是什么了网站dns解析失败
  • 大悟网站开发顺企网官网
  • 做网站网站的虚拟空间企业风首页中文官网模板
  • 镇江网站建设公司东莞网络营销策划有限公司
  • 上海网站建设咨询站霸网络豌豆荚下载
  • 如果一个网站没有备案佛山网站优化美姿姿seo
  • 建网站的书籍深紫色网站
  • 从事网站美工建设合肥市蜀山区做个网站多少钱
  • 男女做暖暖免费网站柯城网站建设
  • 网站cms管理后台电话号码制作网页的工具是什么
  • xampp可以做网站吗微信分销网站建设多少钱
  • 高端视觉网站小程序推广平台有哪些
  • 网站建设公司哈怎么设置wordpress头像
  • 购买域名后如何建设网站wordpress国外主题加载慢
  • 建设网站那家好西宁网站搭建企业
  • 网站安全风险提示单大型图片库网站建设
  • 网站服务器拒绝连接wordpress数据大
  • 创业园网站建设有关大数据的网站及网址
  • 网站的小图标怎么做的论文中小企业的网站建设
  • 江门网站制作专业塑料机械怎么做网站
  • 网站论坛怎样建设可信网站认证服务中心