C++ STL multimap容器入门 在掌握map容器的基础下,我们开始multimap容器的学习。为什么要求有map的基础呢,原因在于multimap与map容器十分“相似”,不同点在于map只允许存在唯一键,而multimap能够存储重复键,在理解map的基础上对比归纳这两个容器,能够对序列式容器有个宏观的视角,提高对容器的掌控力。如果读者没有map容器的基础,可跳转《初识模板类pair》开始map容器的学习。由于multimap STL有序关联式容器 2025年10月10日 0 点赞 0 评论 678 浏览
C++ STL替换算法std::replace()函数入门 前面一节我们学习了转换算法 transform() 函数,读者是否还记得它的功能是什么吗?没错,transform() 函数能够对序列中的元素进行转换操作并将结果存储到目标位置。本节我们将学习替换算法——replace()、replace_if() 和 replace_copy() 函数。"replace" 意为"替换",顾名思义,这些函数能够对序列中满足条 C++常用算法(二) 2025年10月27日 0 点赞 0 评论 680 浏览
C++ STL移除算法std::remove()函数入门 前面一节我们学习了区间交换算法swap_ranges()函数,读者是否还记得它的功能是什么吗?没错,该函数能够高效地交换两个同类型且等长的区间。本节我们将学习一个新的算法——移除算法,顾名思义,移除算法指的是快速移动同目标元素相等的元素到非相等元素区间,注意“移除”并非删除,想要实现删除效果需要配合erase()函数才行。remove()函数就是一个重要的移除函数,”remove“的意思是”移除“ C++常用算法(二) 2025年10月27日 0 点赞 0 评论 680 浏览
C++ STL unordered_map容器入门 本节我们开始学习unordered_map容器。从功能上看,对比map容器,unordered_map容器既能够通过'[]'访问元素,又能够通过at()成员函数访问元素,同时还保证键值存在的唯一性,与map容器极为“相似”,唯一不同点就是unordered_map容器没有按键(key)进行自动排序;从结构上看,对比map容器,两者又是完全不一样的独立存在,map容器底层基于红黑树, STL无序关联式容器 2025年10月13日 0 点赞 0 评论 682 浏览
深度剖析C++ STL list容器的底层构造 在《初识STL库中的list容器》我们就曾明确谈到list容器是双向链表,每一个节点由两个指针和数据组成,两个指针分别指向前一个节点和后一个节点。长这样:链表属于相对简单的数据结构,我们也可以手搓一个简单链表:首先先创建一个结构体,包括数据域和指针域:structnode{intn;//数据域/*创建node指针初始值为空*/node*nex STL序列式容器 2025年10月05日 0 点赞 0 评论 684 浏览
不要试图修改C++ STL有序关联式容器内元素的键(key)! C++ STL库有序关联式容器我们已经学习完了。想必有不少读者存疑:能不能修改元素的键(key)呢?答案是肯定的,不能!为什么,就像是下标对于数组一样,是数组属性的一部分,键(key)对于有序关联式容器来说也是如此,键(key)关乎容器内元素的访问和排序,是基本的属性规则,不允许修改。其次,pair模板对象的底层是:pair(const_T1&__a,c STL有序关联式容器 2025年10月12日 0 点赞 0 评论 685 浏览
C++ STL容器有哪些常用成员函数和成员变量? 使用STL需要我们了解容器及其对应的成员函数和成员变量,不求全部背诵,但是要有个印象,方便文档查询和算法使用,下表罗列了算法竞赛中STL常用函数和变量:类别名称功能说明适用容器容量相关size()返回当前元素个数全部容器empty()判断容器是否为空全部容器max_size()返回容器可容纳的最大元素数全部容器capacity()返回当前分配的内存容量(仅vector/string)vector, STL序列式容器 2025年10月01日 1 点赞 0 评论 685 浏览
深度剖析C++ STL priority_queue适配器底层的堆结构 在《C++ STL priority_queue适配器入门》我们就曾提到优先队列的底层结构是堆,具体是二叉堆,这个二叉堆可以类比二叉树进行学习。可能有读者存疑了,本章不是在学习容器适配器吗,怎么会谈到底层结构呢,这么说优先队列底层到底是堆还是vector容器还是deque容器呢?其实,结构和容器是两个完全不同的概念,但是它们可以组合在一起!就适配容器而言,优先队列采用vector容器或deque容 STL容器适配器 2025年10月18日 2 点赞 0 评论 687 浏览
C++ STL list容器如何访问元素? 在《初识STL库中的list容器》那节我们就可以看到list容器内所有成员函数,如果我们仔细观察,我们就会发现list既没有at()成员函数又没有data()指针,所以我们不能通过at()或data()来对list进行元素访问。当然,由于链表的元素储存地址不是连续的,所以无法通过'[]'重载进行元素访问,所以list只能“认命”,只能通过最基本的元素访问方式——迭代器进行元素访问。 STL序列式容器 2025年10月06日 0 点赞 0 评论 689 浏览
C++ STL移除算法std::unique()函数入门 前面一节我们学习了复制算法 reverse_copy() 函数,读者是否还记得它的功能是什么吗?没错,该函数能够将序列元素反转顺序后复制到目标区域。本节我们将学习一个新的算法,移除算法,顾名思义,该算法的功能是移除序列中不符合条件的元素,注意是移除而不是删除,实际上是覆盖。unique() 函数就是一个移除算法,"unique" 意为"唯一的",但读者千万别 C++常用算法(二) 2025年10月26日 1 点赞 0 评论 689 浏览