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

网站怎么做落款深圳网站建设 设计卓越迈

网站怎么做落款,深圳网站建设 设计卓越迈,wordpress 评论回复,软件工程主修课程文章目录 C 中的容器分类1. 顺序容器2. 关联容器3. 无序容器4. 容器适配器5. 字符串容器6. 特殊容器 set1.构造函数2.迭代器3.容量相关的成员函数4.修改器类的成员函数5.容器相关操作的成员函数 multiset1.equal_range map1.初始化相关的函数2.迭代器3.容量相关的成员函数4.访问… 文章目录 C 中的容器分类1. 顺序容器2. 关联容器3. 无序容器4. 容器适配器5. 字符串容器6. 特殊容器 set1.构造函数2.迭代器3.容量相关的成员函数4.修改器类的成员函数5.容器相关操作的成员函数 multiset1.equal_range map1.初始化相关的函数2.迭代器3.容量相关的成员函数4.访问相关的成员函数5.修改器类的成员函数6.容器相关操作的成员函数 总结 C 中的容器分类 在C中标准库提供了多种容器这些容器可以根据其数据存储方式和功能进行分类。以下是C中常见容器的分类 1. 顺序容器 这些容器按顺序存储元素适用于需要保持元素顺序的场景。 vector: 动态数组支持快速随机访问和在末尾高效插入和删除操作。deque: 双端队列支持快速随机访问和在两端高效插入和删除操作。list: 双向链表支持在任何位置高效插入和删除操作但随机访问较慢。forward_list: 单向链表只支持在头部高效插入和删除操作。array: 固定大小的数组大小在编译时确定。 2. 关联容器 这些容器根据键值对存储元素并自动按键排序适用于需要快速查找的场景。 set: 集合存储唯一的元素元素自动按键排序。multiset: 允许重复元素的集合元素自动按键排序。map: 键值对存储的映射键唯一且自动排序。multimap: 允许重复键的映射键自动排序。 3. 无序容器 这些容器使用哈希表存储元素适用于需要快速查找和插入的场景但不保证元素顺序。 unordered_set: 无序集合存储唯一的元素。unordered_multiset: 无序多重集合允许重复元素。unordered_map: 无序映射键唯一。unordered_multimap: 无序多重映射允许重复键。 4. 容器适配器 这些不是独立的容器而是对现有容器的包装提供特定用途的接口。 stack: 栈后进先出LIFO结构通常使用deque或vector实现。queue: 队列先进先出FIFO结构通常使用deque或list实现。priority_queue: 优先队列元素按优先级排序通常使用vector和heap算法实现。 5. 字符串容器 string: 用于存储和操作字符序列类似于动态数组但专门针对字符。 6. 特殊容器 bitset: 固定大小的二进制数组提供按位操作。 这些容器各有优缺点和适用场景选择合适的容器可以显著提高程序的性能和可维护性。 这篇文章讲的两个容器都是关联式容器 set 在C标准库中set容器的底层实现通常是基于红黑树这种自平衡二叉搜索树。红黑树是一种能够在插入、删除和查找操作中保持对数时间复杂度的树结构。 1.构造函数 构造函数主要分为三个无参构造迭代器区间构造拷贝构造 无参构造 setint s;迭代器区间构造 vectorint v{ 1,2,3,4,5,6,7 }; setint s(v.begin(), v.end());拷贝构造 setint s1{ 1,2,3,4 }; setint s2(s1);赋值拷贝 setint s1{ 1,2,3,4 }; setint s2; s2 s1;2.迭代器 迭代器遍历 auto it s1.begin(); while (it ! s1.end()) {cout *it ;it; }范围for for (auto e : s1) {cout e ; }3.容量相关的成员函数 int main() {setint s1{ 1,2,3,4 };cout s1.size() endl;//4cout s1.empty() endl;//0return 0; }4.修改器类的成员函数 insert 有三个重载函数 支持迭代器区间插入。 int main() {setint s1;s1.insert(2);s1.insert(3);s1.insert(6);s1.insert(1);s1.insert(5);s1.insert(7);for (auto e : s1){cout e ;}return 0; }erase 第二个重载函数 int num s1.erase(3); cout endl num endl;删除成功返回1删除失败返回0。 5.容器相关操作的成员函数 find int main() {setint s1;s1.insert(2);s1.insert(3);s1.insert(6);s1.insert(1);s1.insert(5);s1.insert(7);auto it s1.find(2);if (it ! s1.end()) cout *it endl;else cout does not exist endl;return 0; }如果找到了返回找到的迭代器如果没有找到则返回的是end()。 count count返回的是对应元素的个数在set中存在就返回1不存在就返回0。 lower_bound lower_bound返回的是大于等于某个数的。 int main() {setint s1;s1.insert(2);s1.insert(3);s1.insert(6);s1.insert(1);s1.insert(5);s1.insert(7);auto lower s1.lower_bound(4);cout *lower endl;return 0; }这里输出的是大于等于4的数所以这里输出的是5。 upper_bound auto upper s1.upper_bound(6); cout *upper endl;这里输出的是大于6的数所以输出的是7。 set有一个致命的缺陷在插入重复数据时是插入不进去的所以这里我们需要了解multiset。 multiset multiset和set唯一不同的区别是一个支持插入重复数据一个不支持。 int main() {setint s1;s1.insert(1);s1.insert(1);s1.insert(1);s1.insert(1);for (auto e : s1) cout e ;multisetint s2;s2.insert(1);s2.insert(1);s2.insert(1);s2.insert(1);cout endl;for (auto e : s2)cout e ;return 0; }可以set不支持插入重复数据multiset支持插入重复数据。 在查找数据的时候multiset查找的是第一个数据。 删除数据multiset删除数据删除的是所有重复的数据而不是删除第一个数据。 1.equal_range int main() {multisetint s{ 1,1,4,4,4,3,3,3,3,3,5,5,5, 6 };auto [a, b] s.equal_range(3);s.erase(a, b);for (auto e : s){cout e ;} }equal_range可以求出指定值的范围区域两个迭代器。 一个首一个尾。 map map属于KV模型用一个k值索引v值。 在C标准库中map 容器的底层实现通常是基于红黑树Red-Black Tree这种自平衡二叉搜索树Self-balancing Binary Search Tree。红黑树是一种能够在插入、删除和查找操作中保持对数时间复杂度的树结构。 1.初始化相关的函数 构造函数 map和set的构造方式是一样的也是三种构造函数。 2.迭代器 map的迭代器和set的迭代器稍有区别但不多。 返回for int main() {mapint, char m{ { 1,a } ,{ 2,b },{ 3,c },{ 4,d },{ 5,e } };for (auto e : m)cout e.first : e.second endl; }迭代器区间遍历 int main() {mapint, char m{ { 1,a } ,{ 2,b },{ 3,c },{ 4,d },{ 5,e } };auto it m.begin();while (it ! m.end()){cout it-first : it-second endl;it;} }结构化绑定 int main() {mapint, char m{ { 1,a } ,{ 2,b },{ 3,c },{ 4,d },{ 5,e } };for (auto [a, b] : m)cout a : b endl; }3.容量相关的成员函数 和set的用法大差不差。 4.访问相关的成员函数 operator[] int main() {mapint, char m{ { 1,a } ,{ 2,b },{ 3,c },{ 4,d },{ 5,e } };cout m[1] endl;cout m[2] endl;cout m[3] endl; }map可以通过一个成员的第一个键值来索引当前成员的第二个键值就是用key索引value。 at int main() {mapint, char m{ { 1,a } ,{ 2,b },{ 3,c },{ 4,d },{ 5,e } };cout m.at(1) endl; }用at进行索引value。 可以看见如果容器当中没有当前值的索引则会抛出异常。 5.修改器类的成员函数 这里修改器类的成员函数和set相同但是insert需要插入一个键值对 m.insert({ 6,f }); m.insert(pairint, char(6, f)); m.insert(make_pair(6, f));6.容器相关操作的成员函数 这些和set都是一样的。 总结 在本篇博客中我们深入探讨了C标准库中的map和set容器。通过详细的示例和解释我们了解了它们的基本用法、常用操作以及在不同场景下的应用。map和set不仅为我们提供了高效的键值对存储和有序集合管理功能还在复杂数据结构和算法设计中扮演了重要角色。 掌握map和set的使用不仅能够提升我们的编程效率还能帮助我们编写出更为高效和可靠的代码。在实际开发中合理地选择和使用这些容器可以显著优化程序的性能和可维护性。 希望通过这篇博客大家能够对map和set有更深入的理解并在以后的编程实践中灵活运用它们。如果你有任何疑问或建议欢迎在评论区留言讨论。
http://www.hkea.cn/news/14391525/

相关文章:

  • 中学网站建设 课设定制高端网站建设
  • 资深网站购物网站开发报告
  • 吴桥网站做网站收益
  • 网站设计风格介绍网站制作多少钱啊
  • 外国人讲汉语做网站的视频免费个人网站申请
  • 苏州建网站制作费用多少钱wordpress 左边导航菜单
  • 做课件可赚钱的网站关键词查询工具哪个好
  • 爱站网是怎么回事购物网站需要哪些模块
  • 河南省漯河建设局网站小制作大全简单又漂亮
  • 咨询类网站建设深圳12个区地图
  • 大足专业建站公司一个ip地址上可以做几个网站
  • 洛阳市新区建设投资有限公司网站小企业网站建设在哪里
  • 电子商务网站建设与管理期末考试试卷a百度竞价 百度流量 网站权重
  • 网站建设佰首选金手指十六电脑网站建设在哪里
  • 有关做生态环境的官方网站工商注册营业执照网址
  • 海南省建设与执业资格注册中心网站siteservercms做的网站在后台进行修改教程
  • 英语网站大全免费网站vip功能怎么实现
  • dw做的网站不显示营销网站如何实现差异化
  • 淘宝客建网站怎么做网站首页的动态效果图怎么做
  • 怎么选择宜昌网站建设安徽品质网站建设创新
  • 深圳企业官方网站建设WordPress如何转换中文
  • 南京模板网站建设企业影视后期制作培训机构全国排名
  • 多城市分站网站建设嘉兴企业网站推广方法
  • 广告支持模式的网站网站授权管理系统怎么做
  • 一个网站如何做桌面快捷链接虚拟币 wordpress
  • 做seo需要建网站吗官方网站哪家做的最好
  • 开发一个网站的步骤流程北京网站建设在线
  • 三合一商城网站专业网站建设的公司
  • aspcms分类信息网站网站建设引入谷歌地图
  • 滨州网站建设sdshiya工作室装修