![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STL标准库
文章平均质量分 68
云中飞鸿--张*峰
这个作者很懒,什么都没留下…
展开
-
STL用法
STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。原创 2024-02-24 13:22:17 · 784 阅读 · 0 评论 -
C++STL相关问题2
vector就是一个动态数组,里面有一个指针指向一片连续的内存空间,当空间不够装下数据时,会自动申请另一片更大的空间(一般是增加当前容量的50%或100%),然后把原来的数据拷贝过去,接着释放原来的那片空间;vector和deque是序列式容器,其内存分别是连续空间和分段连续空间,删除迭代器it后,其后面的迭代器都失效了,此时it及其后面的迭代器会自动加1,使it指向被删除元素的下一个元素。将前两个元素合并,再将后两个元素合并,然后合并这两个子序列成4个元素的子序列,重复这一过程,得到8个,16个,…原创 2024-02-21 10:50:14 · 834 阅读 · 0 评论 -
C++ STL相关问题
答案: STL提供了std::make_heap、std::push_heap、std::pop_heap等函数来操作容器作为堆。答案: 迭代器失效指的是由于底层容器的修改(如添加、删除元素),迭代器指向的元素不再存在或不再有效,从而导致未定义行为。答案: std::priority_queue是一个容器适配器,提供常数时间的最大元素查找,对数时间的插入和删除。答案: std::nth_element重新排列元素,使得第n个元素处于其最终排序位置,所有小于这个元素的都在其前面,大于它的都在其后面。原创 2024-02-21 10:48:03 · 674 阅读 · 0 评论 -
STL set、map实现为什么要以红黑树为底层实现机制?
我认为最重要的原因:STL中heap是基于vector实现的,而vector是连续线性空间,这不符合set的集合性质!set 、map都要求自动排序,heap也能实现自动排序啊,为什么不用heap?3.为什么不用平衡二叉搜索树(AVL树)?这点有待全面理解红黑树的特点再给出结论。可能不平衡,造成搜索深度过大!2.为什么不用二叉搜索树?1.为什么不用heap?原创 2024-02-21 10:45:20 · 119 阅读 · 0 评论 -
set的底层实现:为什么不用哈希表,而使用红黑树?
2、如果只是单纯的查找元素的话,那么肯定要选哈希表了,因为哈希表在的最好查找时间复杂度为O(1),并且如果用到set中那么查找时间复杂度的一直是O(1),因为set中是不允许有元素重复的。而红黑树的查找时间复杂度为O(logn)1、set中元素是经过排序的。原创 2024-02-21 10:42:51 · 107 阅读 · 0 评论 -
std::pair
pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。一般make_pair都使用在需要pair做参数的位置,可以直接调用make_pair生成pair对象很方便,代码也很清晰。另一个使用的方面就是pair可以接受隐式的类型转换,这样可以获得更高的灵活度。表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始化,则调用默认构造函数对其初始化。原创 2023-07-04 15:45:54 · 2817 阅读 · 0 评论