【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表达式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/37071.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

knowledge-微前端(多个前端应用聚合的一个应用架构体系,每个小的应用可独立运行,独立开发,独立部署上线)

1.前言 微前端&#xff0c;将一个大的前端应用拆分为多个小型的&#xff0c;独立开发的前端应用&#xff0c;每一个小型的应用都可以单独的开发&#xff0c;部署和运行。这种结构允许不同的团队使用不同的技术栈来开发应用的不同部分&#xff0c;提高开发的效率与灵活性。 2.实…

三格电子PLC数据采集网关-工业互联的智能枢纽

在工业自动化领域&#xff0c;设备间的数据互通与协议兼容是核心挑战之一。三格电子推出的PLC据采集网关SG-PLC-Private&#xff0c;凭借其多协议兼容、高稳定性和灵活配置能力&#xff0c;成为工业物联网&#xff08;IIoT&#xff09;中实现设备互联的关键设备。本文将从产品功…

鸿蒙NEXT项目实战-百得知识库05

代码仓地址&#xff0c;大家记得点个star IbestKnowTeach: 百得知识库基于鸿蒙NEXT稳定版实现的一款企业级开发项目案例。 本案例涉及到多个鸿蒙相关技术知识点&#xff1a; 1、布局 2、配置文件 3、组件的封装和使用 4、路由的使用 5、请求响应拦截器的封装 6、位置服务 7、三…

leetcode热题100道——字母异位词分组

给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate", "nat", &…

【Vue3】01-vue3的基础 + ref reactive

首先确保已经有了ES6的基础 本文介绍 vue 的基础使用以及 两种响应数据的方式。 目录 1. 创建一个vue应用程序 2. Vue模块化开发 3. ref 和 reactive 的区别 1. 创建一个vue应用程序 所需的两个文件&#xff1a; https://unpkg.com/vue3/dist/vue.global.js https://un…

Linux中的selinux,磁盘管理

一、selinux 作用&#xff1a;通过对软件进程限制某些权限&#xff0c;从而保证系统的安全。通过上下文类型和设定好的上下文类型是否一致。如果一致&#xff0c;那么软件就可以完成后续的操作&#xff0c;例如访问文件中数据&#xff0c;或者让数据通过某个端口。做好个人防护…

Linux应用:Linux的信号

什么是信号 信号是一种软件中断&#xff0c;用于通知进程系统中发生了某种特定事件。它是操作系统与进程之间&#xff0c;以及进程与进程之间进行异步通信的一种方式。在 Linux 系统中&#xff0c;信号是一种比较简单的进程间通信机制。当一个信号产生时&#xff0c;内核会通过…

Linux笔记之Ubuntu22.04安装IBus中文输入法教程

Linux笔记之Ubuntu22.04安装IBus中文输入法教程 code review&#xff01; 文章目录 Linux笔记之Ubuntu22.04安装IBus中文输入法教程安装 IBus 并配置中文输入法步骤 1: 安装 IBus 和拼音插件步骤 2: 设置 IBus 为默认输入法框架步骤 3: 重启会话步骤 4: 添加中文输入法步骤 5: …

【AIGC前沿】MiniMax海螺AI视频——图片/文本生成高质量视频

目录 1.MiniMax海螺AI视频简介 2.使用教程 1.MiniMax海螺AI视频简介 海螺视频&#xff0c;作为 MiniMax 旗下海螺 AI 平台精心打造的 AI 视频生成工具&#xff0c;致力于助力用户产出高品质视频内容。该工具依托 abab-video-1 模型&#xff0c;具备强大的文生视频功能。用户…

Kubeasz工具快速部署K8Sv1.27版本集群(二进制方式)

文章目录 一、基本信息二、服务器初始化操作三、使用Kubeasz部署K8S集群四、验证集群 一、基本信息 1、部署需要满足前提条件&#xff1a; 注意1&#xff1a;确保各节点时区设置一致、时间同步&#xff1b;注意2&#xff1a;确保在干净的系统上开始安装&#xff1b;注意3&…

在VMware上部署【Ubuntu】

镜像下载 国内各镜像站点均可下载Ubuntu镜像&#xff0c;下面例举清华网站 清华镜像站点&#xff1a;清华大学开源软件镜像站 | Tsinghua Open Source Mirror 具体下载步骤如下&#xff1a; 创建虚拟机 准备&#xff1a;在其他空间大的盘中创建存储虚拟机的目录&#xff0c…

2025年Postman的五大替代工具

虽然Postman是一个广泛使用的API测试工具&#xff0c;但许多用户在使用过程中会遇到各种限制和不便。因此&#xff0c;可能需要探索替代解决方案。本文介绍了10款强大的替代工具&#xff0c;它们能够有效替代Postman&#xff0c;成为你API测试工具箱的一部分。 什么是Postman&…

wow-rag—task5:流式部署

我们希望做一个流式输出的后端&#xff0c;然后让前端去捕获这个流式输出&#xff0c;并且在聊天界面中流式输出。 首先构造流式输出引擎。 # 构造流式输出引擎 query_engine index.as_query_engine(streamingTrue, similarity_top_k3,llmllm)然后生成response_stream&#x…

投资日记_道氏理论技术分析

主要用于我自己参考&#xff0c;我感觉我做事情的时候容易上头&#xff0c;忘掉很多事情。 技术分析有很多方法&#xff0c;但是我个人相信并实践的还是以道氏理论为根本的方法。方法千千万万只有适合自己价值观&#xff0c;习惯&#xff0c;情绪&#xff0c;性格的方法才是好的…

LangChain4j入门指南:Java开发者的AI应用新起点

什么是LangChain和LangChain4j&#xff1f; LangChain是⼀个⼤模型的开发框架&#xff0c;使⽤ LangChain 框架&#xff0c;程序员可以更好的利⽤⼤模型的能⼒&#xff0c;⼤⼤提⾼编 程效率。如果你是⼀个 Java 程序员&#xff0c;那么对 LangChain 最简单直观的理解就是&…

【实测闭坑】LazyGraphRAG利用本地ollama提供Embedding model服务和火山引擎的deepseek API构建本地知识库

LazyGraphRAG 2024年4月&#xff0c;为解决传统RAG在全局性的查询总结任务上表现不佳&#xff0c;微软多部门联合提出Project GraphRAG&#xff08;大模型驱动的KG&#xff09;&#xff1b;2024年7月&#xff0c;微软正式开源GraphRAG项目&#xff0c;引起极大关注&#xff0c…

压力测试实战指南:JMeter 5.x深度解析与QPS/TPS性能优化

一、压力测试基础概念 1.1 什么是压力测试&#xff1f; 定义&#xff1a;模拟极端负载场景验证系统性能极限 目的&#xff1a;发现性能瓶颈、评估系统可靠性、验证容错能力 常见类型&#xff1a;负载测试、压力测试、稳定性测试、峰值测试 1.2 核心性能指标解析 1.2.1 QP…

嵌入式4-Modbus

1.Modbus Modbus 是一种广泛应用于工业自动化领域的通信协议&#xff0c;用于在不同设备&#xff08;如传感器、PLC、变频器、仪表等&#xff09;之间交换数据。它支持串行通信&#xff08;如 RS232、RS485&#xff09;和以太网通信&#xff08;Modbus TCP&#xff09;&#x…

机器学习-手搓KNN算法

一、简介 K最近邻&#xff08;K-Nearest Neighbors, KNN&#xff09;​ 是一种简单且直观的监督学习算法&#xff0c;适用于分类和回归任务。其核心思想是&#xff1a;​相似的数据点在特征空间中彼此接近。KNN通过计算新样本与训练数据中各个样本的距离&#xff0c;找到最近的…

Linux|fork命令及其使用的写时拷贝技术

fork复制进程 fork通过以下步骤来复制进程&#xff1a; 分配新的进程控制块&#xff1a;内核为新进程分配一个新的进程控制块&#xff08;PCB&#xff09;&#xff0c;用于存储进程的相关信息&#xff0c;如进程 ID、状态、寄存器值、内存指针等。复制进程地址空间&#xff1…