浅谈C++ STL的发展史 1. 思想起源与早期探索(1970s - 1980s) STL 的核心理念源于其创始人 Alexander Stepanov 的长期思考:能否将算法从具体应用中抽象出来,且不损失运行效率?在莫斯科大学攻读数学后,Stepanov 与 David Musser 等人合作,先后使用 Tecton、Schema 和 Ada 语言进行泛型库 STL基础 2025年10月01日 2 点赞 0 评论 460 浏览
C++ STL list容器如何访问元素? 在《初识STL库中的list容器》那节我们就可以看到list容器内所有成员函数,如果我们仔细观察,我们就会发现list既没有at()成员函数又没有data()指针,所以我们不能通过at()或data()来对list进行元素访问。当然,由于链表的元素储存地址不是连续的,所以无法通过'[]'重载进行元素访问,所以list只能“认命”,只能通过最基本的元素访问方式——迭代器进行元素访问。 STL序列式容器 2025年10月06日 0 点赞 0 评论 415 浏览
C++ STL排列组合算法std::prev_permutation()函数入门 前面一节我们学习了排列组合算法——next_permutation()函数,读者是否还记得它的功能是什么吗?没错,它能让我们的序列按照字典序重新排列成下一个更大的组合。本节我们将学习它的对称函数——prev_permutation()函数。"prev"表示"前一个","permutation"表示"置换",这里prev C++常用算法(二) 2025年10月26日 0 点赞 0 评论 329 浏览
C++ STL 流缓冲区迭代器入门 上一节我们学习了流迭代器,本节我们继续深入学习流对象的缓冲区迭代器——分别是istreambuf_iterator(从缓冲区读取字符)和ostreambuf_iterator(向缓冲区写入字符)。由于缓冲区读取数据要比流对象快,所以流缓冲区迭代器的操作效率要比流迭代器高。但在需要类型转换和数据验证的场景中,流迭代器提供了更好的安全性和便利性,读者需要明晰两者之间的区别。它们的使用方式十分“相似&q STL迭代器适配器 2025年10月19日 0 点赞 0 评论 313 浏览
C++ STL有序关联式容器如何更改排序规则? 到目前为止,我们已经把有序关联式容器全部学习完了,读者是否能够完整地枚举它们并清晰地区分它们呢?它们分别是:map容器、multimap容器、set容器和multiset容器。它们都有一个共同的特点,就是能够在元素插入时按照默认的排序规则将键(key)排序(默认都是升序排序),那么如何更改有序关联式容器的排序规则呢?对于这个问题,我推荐使用仿函数来实现。什么是仿函数,读者心里可能一头雾水。简单来说 STL有序关联式容器 2025年10月12日 0 点赞 0 评论 384 浏览
C++ STL序列查找算法std::find_end()函数入门 前面我们学习的查找算法都是单个元素进行查找,本节我们学习一个按序列进行查找的算法——find_end()。find_end(first1,last1,first2,last2)的功能是在主序列[first1,last1)中寻找最后一次出现的子序列[first2,last2),如果找到就返回最后一次出现在主序列中的子序列的起始迭代器;如果找不到就主序列的last1迭代器。举个例子,主序列是{' C++常用算法(一) 2025年10月23日 0 点赞 0 评论 339 浏览
C++ STL unordered_multimap容器入门 在掌握unordered_map容器的基础下,我们开始unordered_multimap容器的学习。为什么要求有unordered_map容器的基础呢,原因在于unordered_multimap容器与unordered_map容器十分“相似”,不同点在于unordered_map容器只允许存在唯一键,而unordered_multimap容器能够存储重复键,在理解unordered_map容器 STL无序关联式容器 2025年10月15日 0 点赞 0 评论 329 浏览
C++STL之Vector容器 C++STL之Vector容器1.概念Vector可以翻译为向量,或向量数组,至于为什么以向量命名,可以理解为一维空间也是存在向量的。Vector是最简单的序列是容器,就像数组一样,向量使用连续的存储位置作为元素,这意味着它们的元…… C++STL库教程(附带题库) 2022年04月11日 294 点赞 0 评论 122847 浏览
C++ STL vector容器入门 就普通数组而言,array不过是封装一个类的把戏罢了,只能称之为pro版数组;而对于vector来说,则是一台完美的重装坦克,升级为promax版数组,兼顾动态扩展和多种功能,成为算法竞赛上的常用数组容器。vector与前面两者不同,能够做到动态扩展,相比传统数组而言更加灵活。如果读者对array是否为动态数组而感到疑虑,则可自行跳转《千万别认为array容器是动态数组!》去一探究竟。vector STL序列式容器 2025年10月02日 1 点赞 0 评论 402 浏览
C++ STL二分查找std::binary_search()函数入门 前面一节我们学习了equal_range()函数,该函数的功能是在指定有序区间内查找第一个高于目标元素的元素。本节我们开始学习新的二分查找函数——binary_search()函数。“binary”意为“二分的”,“search”意为“查找”,binary_search()函数的功能是在指定有序范围内判断是否存在目标元素。binary_search()函数的语法格式为:/*查找[fir C++常用算法(一) 2025年10月25日 0 点赞 0 评论 392 浏览