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

江阴高新区建设促进服务中心网站友情链接怎么弄

江阴高新区建设促进服务中心网站,友情链接怎么弄,功能网站首页模板,宁波广告公司​ ​#x1f4dd;个人主页#xff1a;Sherry的成长之路 #x1f3e0;学习社区#xff1a;Sherry的成长之路#xff08;个人社区#xff09; #x1f4d6;专栏链接#xff1a;C学习 #x1f3af;长路漫漫浩浩#xff0c;万事皆有期待 上一篇博客#xff1a;【C】STL…​ ​个人主页Sherry的成长之路 学习社区Sherry的成长之路个人社区 专栏链接C学习 长路漫漫浩浩万事皆有期待 上一篇博客【C】STL详解五—— list的介绍及使用 文章目录 unordered系列关联式容器unordered_set的介绍unordered_set的使用unordered_set接口的使用unordered_multiset unordered_map的介绍unordered_map的使用unordered_map的定义方式unordered_map接口的使用unordered_multimap 总结 unordered系列关联式容器 在C98中STL提供了底层为红黑树结构的一系列关联式容器在查询时的效率可达到O(logN)即最差情况下需要比较红黑树的高度次当树中的结点非常多时查询效率也不理想。最好的查询是进行很少的比较次数就能够将元素找到因此在C11中STL又提供了4个unordered系列的关联式容器这四个容器与红黑树结构的关联式容器使用方式基本类似只是其底层结构不同。 unordered_set的介绍 unordered_set是不按特定顺序存储键值的关联式容器其允许通过键值快速的索引到对应的元素。 在unordered_set中元素的值同时也是唯一地标识它的key。 在内部unordered_set中的元素没有按照任何特定的顺序排序为了能在常数范围内找到指定的keyunordered_set将相同哈希值的键值放在相同的桶中。 unordered_set容器通过key访问单个元素要比set快但它通常在遍历元素子集的范围迭代方面效率较低。 它的迭代器至少是前向迭代器。 unordered_set的使用 unordered_set的定义方式 方式一 构造一个某类型的空容器。 unordered_setint us1; //构造int类型的空容器方式二 拷贝构造某同类型容器的复制品。 unordered_setint us2(us1); //拷贝构造同类型容器us1的复制品方式三 使用迭代器拷贝构造某一段内容。 string str(abcedf); unordered_setchar us3(str.begin(), str.end()); //构造string对象某段区间的复制品unordered_set接口的使用 unordered_set当中常用的成员函数如下 成员函数 功能 insert 插入指定元素 erase 删除指定元素 find 查找指定元素 size 获取容器中元素的个数 empty 判断容器是否为空 clear 清空容器 swap 交换两个容器中的数据 count 获取容器中指定元素值的元素个数unordered_set当中迭代器相关函数如下 成员函数 功能 begin 获取容器中第一个元素的正向迭代器 end 获取容器中最后一个元素下一个位置的正向迭代器使用示例 #include iostream #include unordered_set using namespace std;int main() {unordered_setint us;//插入元素去重us.insert(1);us.insert(4);us.insert(3);us.insert(3);us.insert(2);us.insert(2);us.insert(3);//遍历容器方式一范围forfor (auto e : us){cout e ;}cout endl; //1 4 3 2//删除元素方式一us.erase(3);//删除元素方式二unordered_setint::iterator pos us.find(1); //查找值为1的元素if (pos ! us.end()){us.erase(pos);}//遍历容器方式二迭代器遍历unordered_setint::iterator it us.begin();while (it ! us.end()){cout *it ;it;}cout endl; //4 2//容器中值为2的元素个数cout us.count(2) endl; //1//容器大小cout us.size() endl; //2//清空容器us.clear();//容器判空cout us.empty() endl; //1//交换两个容器的数据unordered_setint tmp{ 11, 22, 33, 44 };us.swap(tmp);for (auto e : us){cout e ;}cout endl; //11 22 33 44return 0; } unordered_multiset unordered_multiset容器与unordered_set容器的底层数据结构是一样的都是哈希表其次它们所提供的成员函数的接口都是基本一致的这里就不再列举了这两种容器唯一的区别就是unordered_multiset容器允许键值冗余即unordered_multiset容器当中存储的元素是可以重复的。 #include iostream #include unordered_set using namespace std;int main() {unordered_multisetint ums;//插入元素允许重复ums.insert(1);ums.insert(4);ums.insert(3);ums.insert(3);ums.insert(2);ums.insert(2);ums.insert(3);for (auto e : ums){cout e ;}cout endl; //1 4 3 3 3 2 2return 0; }由于unordered_multiset容器允许键值冗余因此该容器中成员函数find和count的意义与unordered_set容器中的也有所不同 成员函数find 功能 unordered_set容器 返回键值为val的元素的迭代器 unordered_multiset容器 返回底层哈希表中第一个找到的键值为val的元素的迭代器成员函数count 功能 unordered_set容器 键值为val的元素存在则返回1不存在则返回0find成员函数可替代 unordered_multiset容器 返回键值为val的元素个数find成员函数不可替代unordered_map的介绍 unordered_map是存储key, value键值对的关联式容器其允许通过key值快速的索引到与其对应是value。 在unordered_map中键值通常用于唯一地标识元素而映射值是一个对象其内容与此键关联。键和映射值的类型可能不同。 在内部unordered_map没有对key, value按照任何特定的顺序排序为了能在常数范围内找到key所对应的valueunordered_map将相同哈希值的键值对放在相同的桶中。 unordered_map容器通过key访问单个元素要比map快但它通常在遍历元素子集的范围迭代方面效率较低。 unordered_map实现了直接访问操作符operator[]它允许使用key作为参数直接访问value。 它的迭代器至少是前向迭代器。 unordered_map的使用 unordered_map的定义方式 方式一 指定key和value的类型构造一个空容器。 unordered_mapint, double um1; //构造一个key为int类型value为double类型的空容器方式二 拷贝构造某同类型容器的复制品。 unordered_mapint, double um2(um1); //拷贝构造同类型容器um1的复制品方式三 使用迭代器拷贝构造某一段内容。 unordered_mapint, double um3(um2.begin(), um2.end()); //使用迭代器拷贝构造um2容器某段区间的复制品unordered_map接口的使用 unordered_map当中常用的成员函数如下 成员函数 功能 insert 插入键值对 erase 删除指定key值的键值对 find 查找指定key值的键值对 size 获取容器中元素的个数 empty 判断容器是否为空 clear 清空容器 swap 交换两个容器中的数据 count 获取容器中指定key值的元素个数除了上述的成员函数之外unordered_map容器当中还实现了[ ]运算符重载函数该重载函数的功能非常强大 若当前容器中已有键值为key的键值对则返回该键值对value的引用。 若当前容器中没有键值为key的键值对则先插入键值对key, value()然后再返回该键值对中value的引用。 unordered_map当中迭代器相关函数如下 成员函数 功能 begin 获取容器中第一个元素的正向迭代器 end 获取容器中最后一个元素下一个位置的正向迭代器使用示例 #include iostream #include string #include unordered_map using namespace std;int main() {unordered_mapint, string um;//插入键值对方式一构造匿名对象插入um.insert(pairint, string(1, one));um.insert(pairint, string(2, two));um.insert(pairint, string(3, three));//遍历方式一范围forfor (auto e : um){cout e.first - e.second ;}cout endl; //1-one 2-two 3-three//插入键值对方式二调用make_pair函数模板插入um.insert(make_pair(4, four));um.insert(make_pair(5, five));um.insert(make_pair(6, six));//遍历方式二迭代器遍历unordered_mapint, string::iterator it um.begin();while (it ! um.end()){cout it-first - it-second ;it;}cout endl; //1-one 2-two 3-three 4-four 5-five 6-six//插入键值对方式三利用[]运算符重载函数进行插入常用um[7] seven;um[8] eight;um[9] nine;for (auto e : um){cout e.first - e.second ;}cout endl; //9-nine 1-one 2-two 3-three 4-four 5-five 6-six 7-seven 8-eight//删除键值对方式一根据key值删除um.erase(5);//删除键值对方式二根据迭代器删除unordered_mapint, string::iterator pos um.find(7); //查找键值为7的键值对if (pos ! um.end()){um.erase(pos);}for (auto e : um){cout e.first - e.second ;}cout endl; //9-nine 1-one 2-two 3-three 4-four 6-six 8-eight//修改键值对方式一通过find获得迭代器通过迭代器修改pos um.find(1);if (pos ! um.end()){pos-second one/first;}//修改键值对方式二利用[]运算符重载函数进行修改常用um[2] two/second;for (auto e : um){cout e.first - e.second ;}cout endl; //9-nine 1-one/first 2-two/second 3-three 4-four 6-six 8-eight//容器中key值为3的键值对的个数cout um.count(3) endl;//容器的大小cout um.size() endl;//清空容器um.clear();//容器判空cout um.empty() endl;//交换两个容器的数据unordered_mapint, string tmp{ { 2021, before }, { 2022, now } };um.swap(tmp);for (auto e : um){cout e.first - e.second ;}cout endl; //2021-before 2022-nowreturn 0; }unordered_multimap unordered_multimap容器与unordered_map容器的底层数据结构是一样的都是哈希表其次它们所提供的成员函数的接口都是基本一致的这里就不再列举了这两种容器唯一的区别就是unordered_multimap容器允许键值冗余即unordered_multimap容器当中存储的键值对的key值是可以重复的。 #include iostream #include string #include unordered_map using namespace std;int main() {unordered_multimapint, string umm;//插入键值对允许键值重复umm.insert(make_pair(2022, 吃饭));umm.insert(make_pair(2022, 睡觉));umm.insert(make_pair(2022, 敲代码));for (auto e : umm){cout e.first - e.second ;}cout endl; //2022-吃饭 2022-睡觉 2022-敲代码return 0; }由于unordered_multimap容器允许键值对的键值冗余因此该容器中成员函数find和count的意义与unordered_map容器中的也有所不同 成员函数find 功能 unordered_map容器 返回键值为key的键值对的迭代器 unordered_multimap容器 返回底层哈希表中第一个找到的键值为key的键值对的迭代器成员函数count 功能 unordered_map容器 键值为key的键值对存在则返回1不存在则返回0find成员函数可替代 unordered_multimap容器 返回键值为key的键值对的个数find成员函数不可替代其次由于unordered_multimap容器允许键值对的键值冗余调用[ ]运算符重载函数时应该返回键值为key的哪一个键值对的value的引用存在歧义因此在unordered_multimap容器当中没有实现[ ]运算符重载函数。 总结 今天我们比较详细地完成了 unordered_set、unordered_map的介绍及使用了解了一些有关的底层原理。接下来我们用哈希表封装出unordered_map和unordered_set。希望我的文章和讲解能对大家的学习提供一些帮助。 当然本文仍有许多不足之处欢迎各位小伙伴们随时私信交流、批评指正我们下期见~
http://www.w-s-a.com/news/726450/

相关文章:

  • 企业网站必须备案吗wordpress导入数据库依然无法链接
  • 浅谈高校网站群的建设网站不支持m.域名
  • 和平网站建设公司做实验教学视频的网站
  • 音乐网站源码带手机版WordPress菜单调用不出
  • 昆明网站设计都需要设计什么网络推广岗位职责和任职要求
  • 国外公司网站模板网站建设公司选择意见书
  • 如何创建一个网站卖东西郑州 网站建设公司
  • 石景山郑州阳网站建设南京网站搜索引擎优化
  • 一个网站需要哪些备案书店网站建设策划书总结
  • 网站建设的重点是什么注册网站空间
  • 网站公司企业宗旨我的网站 dedecms
  • 沧州网站优化做详情图的网站
  • 中国建设银行公积金网站wordpress表单 post
  • 找权重高的网站方法wordpress视频网站上传视频
  • 营销型网站架构师迁移wordpress500错误
  • 做网站还是博客由()承担
  • wordpress 导购站模板中国最新军事新闻直播83军
  • 公众号h5网站开发wordpress文章主图
  • ps怎么艺术字字体设计网站我想自己做网站
  • 北京做机柜空调的网站模板网站和插件
  • 手机购物网站模板wordpress添加分类文档
  • 网站开发知识网上怎么申请个人营业执照
  • 音乐网站建设费用营销策略都有哪些4p
  • 深圳制作网站怎么样wordpress 学习视频
  • 新公司注册网站传奇手游大型网站
  • 无极网站网站涉案多少人被抓网站的按钮怎么做
  • ds216j做网站做购物网站那个好
  • 做淘宝门头的网站阿里巴巴官网app
  • 安踏网站建设策划方案如何通过域名访问网站
  • 建设网站破解版seo查询 站长之家