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

【C++】STL库面试常问点

STL库

什么是STL库

        C++标准模板库(Standard Template Libiary)基于泛型编程(模板)实现常见的数据结构和算法,提升代码的复用性和效率。

STL库有哪些组件

        STL库由以下组件构成:
● 容器(Containers):存储和管理数据,
          ○ 序列容器:vector、list、deque
          ○ 关联容器:set、map
          ○ 无序关联容器:unordered_set/unordered_map
● 迭代器(Iterators):提供访问容器的统一接口
● 算法(Algorithms):操作数据的通用函数(如排序、查找)
● 函数对象(Functors):行为类似函数的对象(如仿函数、Lambda)
● 适配器(Adapters):修饰组件(如stack、queue基于deque实现)

序列容器、关联容器、无序关联容器

迭代器

        迭代器提供了遍历容器的统一接口,是一种对象,用于遍历容器中的元素,类似指针;
● 输入迭代器(Input Iterator):只能向前遍历容器,每次只能读取一个元素。
● 输出迭代器(Output Iterator):只能向前遍历容器,每次只能写入一个元素。
● 前向迭代器(Forward Iterator):支持输入和输出迭代器的操作,还能多次遍历同一范围。
● 双向迭代器(Bidirectional Iterator):支持前向迭代器的操作,还能反向遍历容器。
● 随机访问迭代器(Random Access Iterator):支持双向迭代器的操作,还能进行随机访问。

算法

        算法库提供了一系列用于操作容器元素的通用函数,像排序、查找、替换等

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    vector<int> vec = {3, 1, 2,9,2};
    sort(vec.begin(), vec.end()); // 对容器元素进行从小到大排序,sort(起止位置,结束位置)
    auto it = find(vec.begin(), vec.end(), 2); //find(起始位置,结束位置,要查找的值)
    if (it != vec.end()) {
        cout << "Found: " << *it << endl;
    }
    return 0;
}
面试常问点
vector与list的区别与联系

map与unordered_map的区别与联系

迭代器失效场景

STL算法实现

仿函数与lambda表达式

相关文章:

  • Java基礎2小時速成(下篇) - 掌握核心技术「卷」
  • 【嵌入式学习】嘉立创画pcb门电路
  • Android 动态代理详解
  • 麒麟操作系统作为服务器,并且需要在浏览器上调试 MATLAB
  • LangChain组件Tools/Toolkits详解(1)——Tools接口与创建工具概述
  • Certd自动化申请和部署SSL证书并配置https
  • Go 语言常量
  • Nvidia 官方CUDA课程学习笔记
  • 【ESP32】虚拟机Ubuntu20.04下ESP32环境搭建
  • $set 方法废弃
  • 设计模式(创建型)-工厂模式
  • RK3568 Android11 sh366006驱动
  • HW华为流程管理体系精髓提炼华为流程运营体系(124页PPT)(文末有下载方式)
  • OpenHarmony 开源鸿蒙北向开发——3.配置SDK
  • Vue-Lottie动画使用
  • 第6章:Dockerfile最佳实践:多阶段构建与镜像优化
  • C++继承与组合完结
  • 互联网安全协议IPsec
  • html5基于Canvas的经典打砖块游戏开发实践
  • k8s1.30 部署calio网络
  • 财政部下达农业生产防灾救灾资金3.76亿元,支持黄淮海等地抗旱保春播
  • 广州一季度GDP为7532.51亿元,同比增长3%
  • 这些被低估的降血压运动,每天几分钟就管用
  • 湖州通告13批次不合格食品,盒马1批次多宝鱼甲硝唑超标
  • 湖南娄底市长曾超群,已任娄底市委书记
  • 新希望去年归母净利润4.74亿同比增逾九成,营收降27%