C++ STL知识点100问

1问:STL有哪几类,对其进行简单描述

答:STL 主要由适配器 allocator,容器 container,算法 algorithm,迭代器 iterator 和仿函数 functor5大类构成。

适配器allocator:STL 提供了三个容器适配器:queue、priority_queue、stack。这些适配器都是包装了 vector、list、deque 中某个顺序容器的包装器。注意:适配器没有提供迭 代器,也不能同时插入或删除多个元素。

容器container:存储数据。

算法algorithm:STL 算法部分主要由头文件<algorithm>组成。要使用 STL 中 的算法函数必须包含头文件。

迭代器iterator:又称 Cursor(游标)模式,用于提供一种方法顺序访问一个 聚合对象中各个元素, 而又不需暴露该对象的内部表示。或者这样说可能更容易理解: Iterator 模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道 对象内部表示的情况下,按照一定顺序(由 iterator 提供的方法)访问聚合对象中的各 个元素。

仿函数functor:仿函数(functor)又称之为函数对象(function object),其实就是重载了()操作符的 class,对象名可以像函数名一样使用。

2问:map 、set、multiset、multimap的特点

  • set和multiset会根据特定的排序准则自动将元素排序,set中元素不允许重复,multiset可以重复。

  • map和multimap将key和value组成的pair作为元素,根据key的排序准则自动将元素排序(因为红黑树也是二叉搜索树,所以map默认是按key排序的),map中元素的key不允许重复,multimap可以重复。

  • map和set的增删改查速度为都是logn,是比较高效的。

相关推荐
John_ToDebug4 小时前
浏览器扩展延迟加载优化实战:如何让浏览器启动速度提升50%
c++·chrome·windows
是娇娇公主~4 小时前
C++ 中 std::deque 的原理?它内部是如何实现的?
开发语言·c++·stl
小江的记录本7 小时前
【事务】Spring Framework核心——事务管理:ACID特性、隔离级别、传播行为、@Transactional底层原理、失效场景
java·数据库·分布式·后端·sql·spring·面试
luanma1509807 小时前
PHP vs C++:编程语言终极对决
开发语言·c++·php
寂静or沉默7 小时前
2026最新Java岗位从P5-P7的成长面试进阶资源分享!
java·开发语言·面试
csdn_aspnet7 小时前
C/C++ 两个凸多边形之间的切线(Tangents between two Convex Polygons)
c语言·c++·算法
yangtuoni9 小时前
vscode调试C++程序
c++·ide·vscode
studyForMokey9 小时前
【Android面试】Activity生命周期专题
android·面试·职场和发展
m0_587958959 小时前
C++中的命令模式变体
开发语言·c++·算法
2501_9249526910 小时前
代码生成器优化策略
开发语言·c++·算法