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

淘宝客推广网站建设展台展览

淘宝客推广网站建设,展台展览,请教个人主页网站怎么做啊,剪辑培训文章目录 特点比较1. std::map2. std::unordered_map3. std::multimap4. std::unordered_multimap5. hash_map(SGI STL 扩展) C 示例代码代码解释 特点比较 1. std::map 底层实现:基于红黑树(一种自平衡的二叉搜索树&#xff09…

文章目录

      • 特点比较
        • 1. `std::map`
        • 2. `std::unordered_map`
        • 3. `std::multimap`
        • 4. `std::unordered_multimap`
        • 5. `hash_map`(SGI STL 扩展)
      • C++ 示例代码
      • 代码解释

特点比较

1. std::map
  • 底层实现:基于红黑树(一种自平衡的二叉搜索树)。
  • 元素顺序:元素按照键(key)的升序排列。
  • 键的唯一性:每个键只能出现一次,插入重复键的元素会被忽略。
  • 查找效率:查找操作的时间复杂度为 O ( l o g n ) O(log n) O(logn),其中 n n n 是容器中元素的数量。
  • 插入和删除效率:插入和删除操作的时间复杂度也为 O ( l o g n ) O(log n) O(logn)
2. std::unordered_map
  • 底层实现:基于哈希表。
  • 元素顺序:元素没有特定的顺序,存储位置由键的哈希值决定。
  • 键的唯一性:每个键只能出现一次,插入重复键的元素会覆盖原有的元素。
  • 查找效率:平均情况下,查找操作的时间复杂度为 O ( 1 ) O(1) O(1),但在最坏情况下可能达到 O ( n ) O(n) O(n)
  • 插入和删除效率:平均情况下,插入和删除操作的时间复杂度为 O ( 1 ) O(1) O(1)
3. std::multimap
  • 底层实现:同样基于红黑树。
  • 元素顺序:元素按照键的升序排列。
  • 键的唯一性:允许键重复,即可以有多个元素具有相同的键。
  • 查找效率:查找操作的时间复杂度为 O ( l o g n ) O(log n) O(logn)
  • 插入和删除效率:插入和删除操作的时间复杂度为 O ( l o g n ) O(log n) O(logn)
4. std::unordered_multimap
  • 底层实现:基于哈希表。
  • 元素顺序:元素没有特定的顺序,由键的哈希值决定存储位置。
  • 键的唯一性:允许键重复。
  • 查找效率:平均情况下,查找操作的时间复杂度为 O ( 1 ) O(1) O(1),最坏情况下为 O ( n ) O(n) O(n)
  • 插入和删除效率:平均情况下,插入和删除操作的时间复杂度为 O ( 1 ) O(1) O(1)
5. hash_map(SGI STL 扩展)
  • 底层实现:基于哈希表。
  • 元素顺序:元素没有特定的顺序,由键的哈希值决定存储位置。
  • 键的唯一性:每个键只能出现一次,插入重复键的元素会覆盖原有的元素。
  • 查找效率:平均情况下,查找操作的时间复杂度为 O ( 1 ) O(1) O(1),最坏情况下为 O ( n ) O(n) O(n)
  • 插入和删除效率:平均情况下,插入和删除操作的时间复杂度为 O ( 1 ) O(1) O(1)
    在早期的 C++ 标准(如 C++98、C++03)中有 hash_map,不过它并非标准库的一部分,而是来自于 SGI STL 扩展。在 C++11 及以后的标准中,hash_mapstd::unordered_map 替代,std::unordered_map 成为标准的哈希表实现。不过有些编译器仍然支持 hash_map,下面为你加入 hash_map 并进行比较,同时给出相应的 C++ 示例代码。

C++ 示例代码

#include <iostream>
#include <map>
#include <unordered_map>
#include <ext/hash_map>  // 对于支持 hash_map 的编译器// 演示 std::map 的使用
void testStdMap() {std::map<int, std::string> myMap;myMap[1] = "apple";myMap[2] = "banana";myMap[1] = "cherry";  // 键 1 重复,会覆盖原有的值std::cout << "std::map:" << std::endl;for (const auto& pair : myMap) {std::cout << pair.first << ": " << pair.second << std::endl;}
}// 演示 std::unordered_map 的使用
void testUnorderedMap() {std::unordered_map<int, std::string> myUnorderedMap;myUnorderedMap[1] = "apple";myUnorderedMap[2] = "banana";myUnorderedMap[1] = "cherry";  // 键 1 重复,会覆盖原有的值std::cout << "\nstd::unordered_map:" << std::endl;for (const auto& pair : myUnorderedMap) {std::cout << pair.first << ": " << pair.second << std::endl;}
}// 演示 std::multimap 的使用
void testMultiMap() {std::multimap<int, std::string> myMultiMap;myMultiMap.insert({1, "apple"});myMultiMap.insert({2, "banana"});myMultiMap.insert({1, "cherry"});  // 键 1 重复,允许插入std::cout << "\nstd::multimap:" << std::endl;for (const auto& pair : myMultiMap) {std::cout << pair.first << ": " << pair.second << std::endl;}
}// 演示 std::unordered_multimap 的使用
void testUnorderedMultiMap() {std::unordered_multimap<int, std::string> myUnorderedMultiMap;myUnorderedMultiMap.insert({1, "apple"});myUnorderedMultiMap.insert({2, "banana"});myUnorderedMultiMap.insert({1, "cherry"});  // 键 1 重复,允许插入std::cout << "\nstd::unordered_multimap:" << std::endl;for (const auto& pair : myUnorderedMultiMap) {std::cout << pair.first << ": " << pair.second << std::endl;}
}// 演示 hash_map 的使用
void testHashMap() {__gnu_cxx::hash_map<int, std::string> myHashMap;myHashMap[1] = "apple";myHashMap[2] = "banana";myHashMap[1] = "cherry";  // 键 1 重复,会覆盖原有的值std::cout << "\nhash_map:" << std::endl;for (const auto& pair : myHashMap) {std::cout << pair.first << ": " << pair.second << std::endl;}
}int main() {testStdMap();testUnorderedMap();testMultiMap();testUnorderedMultiMap();testHashMap();return 0;
}

代码解释

  • testStdMap 函数演示了 std::map 的使用,插入重复键的元素会覆盖原有的值,元素按照键的升序排列。
  • testUnorderedMap 函数演示了 std::unordered_map 的使用,插入重复键的元素也会覆盖原有的值,元素没有特定的顺序。
  • testMultiMap 函数演示了 std::multimap 的使用,允许插入重复键的元素,元素按照键的升序排列。
  • testUnorderedMultiMap 函数演示了 std::unordered_multimap 的使用,允许插入重复键的元素,元素没有特定的顺序。
  • testHashMap 函数演示了 hash_map 的使用,插入重复键的元素会覆盖原有的值,元素没有特定的顺序。

需要注意的是,hash_map 不是标准 C++ 的一部分,如果你使用的编译器不支持 ext/hash_map 头文件,代码可能无法编译。建议优先使用标准的 std::unordered_map


文章转载自:

http://G8qtSybK.kxbry.cn
http://yu6wT4JE.kxbry.cn
http://A4sLnbSA.kxbry.cn
http://yM1TKWpR.kxbry.cn
http://vNM7hJxS.kxbry.cn
http://3gN6BqvT.kxbry.cn
http://5PQXKJPy.kxbry.cn
http://eOsBcFAP.kxbry.cn
http://o7FVWoH4.kxbry.cn
http://aOz72ZC4.kxbry.cn
http://eZjj9HJr.kxbry.cn
http://4WQz1MIE.kxbry.cn
http://8CmgJEhK.kxbry.cn
http://ob7sfGM8.kxbry.cn
http://wIYxhJ7i.kxbry.cn
http://taOo2h44.kxbry.cn
http://S0e2jBLd.kxbry.cn
http://GTihjDUF.kxbry.cn
http://ay7me75e.kxbry.cn
http://sk2m1O8c.kxbry.cn
http://73lU2vKQ.kxbry.cn
http://aynk7GJf.kxbry.cn
http://qBVQO84n.kxbry.cn
http://QHUKmFMY.kxbry.cn
http://Dnk1abOA.kxbry.cn
http://2DRiR08u.kxbry.cn
http://RpT0oP6X.kxbry.cn
http://anu6yY3w.kxbry.cn
http://MfiWNI43.kxbry.cn
http://eGzFJHtQ.kxbry.cn
http://www.dtcms.com/wzjs/755841.html

相关文章:

  • 网站权重怎么做的哈尔滨cms网站建设
  • 做微网站公司简介深圳微商城网站制作联系电话
  • 网站更换运营商要重新备案专业做网站企业
  • 网站平台搭建怎么弄的做自己的网站花多钱
  • 河北省建筑培训网徐州seo外包
  • 本地网站建设公司安卓开发公司
  • 国外优秀摄影网站wordpress 基于 网店
  • 高新网站制作哪家好商城网站的管理用户模块
  • 个人博客网站开发为什么手机进网站乱码
  • 什么是权重高的网站win2012 iis配置网站
  • 郑州建设局网站dede网站栏目管理
  • 揭阳做网站的站长之家0
  • 中国建设银行汕头支行网站京东企业官网
  • 安装wordpress it works福州seo计费
  • 客流统计系统厂家西安seo盐城
  • 建立企业网站的技能网站挂广告
  • 做网站可不可以模仿删除WordPress底部
  • 国家建设部网站注册工程师人员查询杭州巴顿品牌设计
  • 建设网站公司怎么建站小兽wordpress
  • 网站制作想法金华城乡建设网站
  • 深圳网站开发电话咸宁做网站公司
  • 导航网站教程vs做网站如何调试
  • 广州公司建设网站合肥做网站好的公司
  • 做网站和网页有区别吗网络营销的特点包括什么
  • 网站建设在国内外有何趋势一屏式网站有什么好处
  • 免费申请试用网站网站公司做网站
  • 金乡县住房与城乡建设局网站公司建立网站的优势
  • 点图片跳到网站怎么做在线设计房屋装修
  • 网站建设了解网站开发 理念怎么写
  • 怎样开建网站小说网站开发技术实现