【C++】STL(标准模板库)
文章目录
- 1. 基本概念
- 2. 容器
- 2.1. 容器的分类
- 2.2. vector
- 2.2.1. 构造vector对象
- 2.2.2. vector的赋值
1. 基本概念
- STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称,现在已经成为C++标准库的重要组成部分。
- STL的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。
- STL实现了数据结构和算法的分离。
- STL具有高可重用性、高性能和高移植性的特点。
- 高可重用性:STL中几乎所有的代码都采用了类模板和函数模板的方式实现,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。
- 高性能:STL采用了高效的数据结构和算法。
- 高移植性:STL是C++标准库的一部分,可以方便地跨项目、跨平台移植。
2. 容器
2.1. 容器的分类
- 序列式容器
- 每个元素都有固定位置,元素的位置取决于插入时机和地点,和元素值无关。
- vector、deque、list、stack、queue
- 关联式容器
- 元素位置取决于容器特定的排序准则,和插入顺序无关。
- set、multiset、map、multimap
- 常用容器列表
容器名 描述 头文件 向量(vector) 也称为动态数组,在内存中连续存储元素。它具有自动扩展大小的能力,支持随机访问和快速在末尾插入/删除元素。 <vector>列表(list) 也称为链表,由一系列节点链接而成。每个节点存储元素和指向下一个节点的引用。列表支持在任意位置插入/删除元素,但访问和搜索元素的性能较低。 <list>双队列(deque) 双向队列是一种特殊的队列,允许在两端进行插入和删除操作。它具有向量和列表的特性,可以高效地在队列的任一端添加或删除元素。 <deque>集合(set) 集合是一组唯一元素的容器,不允许重复。它提供了高效的搜索和插入操作,但不保持元素的顺序。 <set>多重集合(multiset) 多重集合类似于集合,但允许元素重复。 <set>栈(stack) 栈是一种后进先出(LIFO)的数据结构,类似于一堆盘子。元素只能从栈顶插入和删除。 <stack>队列(queue) 队列是一种先进先出(FIFO)的数据结构,类似于排队。元素只能从队列的一端插入,另一端删除。 <queue>优先队列(priority_queue) 优先队列是一种特殊的队列,元素按照优先级顺序进行插入和删除。具有最高优先级的元素始终排在队列的前面。 <queue>映射(map) 映射是一种键值对(Key-Value)的数据结构,每个键关联一个值。它提供了高效的键值查找,常见操作包括插入、删除和修改键值对。 <map>多重映射(multimap) 多重映射类似于映射,但允许多个键关联相同的值。 <map>
2.2. vector
2.2.1. 构造vector对象
- 默认构造
vector<T> vec; // T替换为要存储的数据的类型 - 带参构造
// 构造长度为n的vector对象 vector<T> vec(n);// 构造长度为n、初始值为val的vector对象 vector<T> vec(n, val); // 用构造好的vector对象构造新的vector对象 vector<T> vec1(n, val); vector<T> vec2(vec1); vector<T> vec2(vec1.begin(), vec1.end());// 用数组构造vector对象 T arr[n] = {0}; vector<T> vec(arr, arr + n);
2.2.2. vector的赋值
相关文章:
【C++】STL(标准模板库)
文章目录 1. 基本概念2. 容器2.1. 容器的分类2.2. vector2.2.1. 构造vector对象2.2.2. vector的赋值 1. 基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称,现在已经成为C标准库的重要组成部分。STL的…...
【已解决】fatal: Authentication failed for ‘https://github.com/.../‘
文章目录 异常原因解决方法 异常原因 在 Linux 服务器上使用git push命令,输入用户名和密码之后,总会显示一个报错: fatal: Authentication failed for https://github.com/TianJiaQi-Code/Linux.git/ # 致命:无法通过验证访问起…...
SqlAlchemy使用教程(二) 入门示例及编程步骤
SqlAlchemy使用教程(一) 原理与环境搭建SqlAlchemy使用教程(三) CoreAPI访问与操作数据库详解 二、入门示例与基本编程步骤 在第一章中提到,Sqlalchemy提供了两套方法来访问数据库,由于Sqlalchemy 官方文档结构有些乱,对于ORM的使用步骤的描…...
HTML+JS+CSS移动端购物车选购界面
代码打包资源下载:【免费】HTMLJSCSS移动端购物车选购界面资源-CSDN文库 关键部分说明: UIGoods 类: 构造函数: 创建 UIGoods 实例时,传入商品数据 g,初始化商品的数据和选择数量。getTotalPrice() 方法…...
微服务治理:为什么要分析微服务的依赖关系?
在微服务架构中,单个服务相互协作以交付功能。这些协作会在服务之间形成依赖关系,其中一个服务依靠另一个服务来完成自己的任务。虽然依赖关系使功能得以实现,但不受控制的依赖关系可能会导致一系列挑战: 复杂性: 错综复杂的依赖…...
【程序员的自我修养—系统调用与API】
系统调用 背景: 为了避免有限的系统资源被多个不同的应用程序同时访问,需要加以保护,避免冲突;提供一套统一的接口,是应用程序能做一些由操作系统支持的行为;接口通过中断的方式实现,Linux使用…...
使用宝塔面板部署后端项目到服务器
文章目录 前言第一步:安装数据库第二步:打包后端项目第三步:配置数据库第四步:部署后端项目第五步:前后端联调测试总结 前言 在之前我已经写了一篇如何去部署前端项目,虽然能访问网站,但是没有…...
走迷宫(c语言)
前言: 制作一个迷宫游戏是一个有趣的编程挑战。首先,我们需要设计一个二维数组来表示迷宫的布局,其中每个元素代表迷宫中的一个格子。我们可以使用不同的值来表示空格、墙壁和起点/终点。接下来,我们需生成迷宫。在生成迷宫的过程…...
两周掌握Vue3(五):自定义指令、路由、ajax
文章目录 一、自定义指令1.创建和使用自定义指令2.钩子函数3.使用参数 二、路由1.创建一个router实例2.在components目录中创建组件3.将路由实例挂载到应用4.使用路由 三、Ajax 代码仓库:跳转 当前分支:05 一、自定义指令 自定义指令是Vue.js框架提供的…...
redis之单线程和多线程
目录 1、redis的发展史 2、redis为什么选择单线程? 3、主线程和Io线程是怎么协作完成请求处理的? 4、IO多路复用 5、开启redis多线程 1、redis的发展史 Redis4.0之前是用的单线程,4.0以后逐渐支持多线程 Redis4.0之前一直采用单线程的主…...
12AOP面向切面编程/GoF之代理模式
先看一个例子: 声明一个接口: // - * / 运算的标准接口! public interface Calculator {int add(int i, int j);int sub(int i, int j);int mul(int i, int j);int div(int i, int j); }实现该接口: package com.sunsplanter.prox…...
【MySQL】数据处理之增删改
文章目录 一、增加(插入)INSERT INTO...VALUES(...,...)VALUES的方式添加情况一:为表的所有字段按默认顺序插入数据情况二:为表的指定字段插入数据情况三:同时插入多条记录 将查询结果插入到表中 二、修改(…...
利用docker的LNMP
目录 服务器环境 任务需求 服务搭建 Nginx Mysql Php 启动 wordpress 服务 服务器环境 容器 操作系统 IP地址 主要软件 nginx CentOS 7 172.20.0.10 Docker-Nginx mysql CentOS 7 172.20.0.20 Docker-Mysql php CentOS 7 172.2…...
Grafana(二)Grafana 两种数据源图表展示(json-api与数据库)
一. 背景介绍 在先前的博客文章中,我们搭建了Grafana ,它是一个开源的度量分析和可视化工具,可以通过将采集的数据分析、查询,然后进行可视化的展示,接下来我们重点介绍如何使用它来进行数据渲染图表展示 Docker安装G…...
Shape-IoU——综合考量边框形状与尺度的度量
今天看到一篇文章主要是提出了一种更有效的IOU度量方法,论文地址在这里,如下所示: 摘要 边界盒回归损失作为检测器定位分支的重要组成部分,在目标检测任务中起着重要作用。现有的边界框回归方法通常考虑GT框和预测框之间的几何关…...
Stack详解(Java)
Stack Java 中的 Stack 是一种基于后进先出(LIFO)原则的数据结构。Stack 类实现了一个标准的堆栈,它继承自 Vector 类,并提供了一些额外的方法来支持堆栈的操作。 下面是一些 Java Stack 类的详细解释: 构造方法&…...
Qt框架学习 --- CTK编译(Qt5.15.2+vs2019+cmake)
系列文章目录 第二章 CTK的测试demo https://blog.csdn.net/yonug1107716573/article/details/135527289 文章目录 系列文章目录前言一、准备工作二、编译步骤1.修改文件2.编译CTK2.1 准备2.2 cmake界面配置2.3 配置编译器2.4 编译的配置设置2.5 选择需要编译的模块2.6 生成2.…...
Flink(十三)【Flink SQL(上)】
前言 最近在假期实训,但是实在水的不行,三天要学完SSM,实在一言难尽,浪费那时间干什么呢。SSM 之前学了一半,等后面忙完了,再去好好重学一遍,毕竟这玩意真是面试必会的东西。 今天开始学习 Flin…...
linux nginx配置链接访问图片
nginx 安装 sudo apt update sudo apt install nginxnginx 启动命令 sudo systemctl restart nginx # 重启 sudo systemctl start nginx #开启 sudo systemctl stop nginx # 关闭 sudo systemctl status nginx # 状态 sudo systemctl restart nginx.service #重启nginx安装成…...
深度学习笔记(二)——Tensorflow环境的安装
本篇文章只做基本的流程概述,不阐述具体每个软件的详细安装流程,具体的流程网上教程已经非常丰富。主要是给出完整的安装流程,以供参考 环境很重要 一个好的算法环境往往能够帮助开发者事半功倍,入门学习的时候往往搭建好环境就已…...
MailHog终极指南:如何快速搭建本地邮件测试环境
MailHog终极指南:如何快速搭建本地邮件测试环境 【免费下载链接】MailHog Web and API based SMTP testing 项目地址: https://gitcode.com/gh_mirrors/ma/MailHog MailHog是一款基于Web和API的SMTP测试工具,能够帮助开发者在本地快速搭建安全高效…...
3个秘诀让AI成为你的象棋教练:Vin象棋智能助手完全指南
3个秘诀让AI成为你的象棋教练:Vin象棋智能助手完全指南 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi 你是否曾遇到这样的象棋困境࿱…...
StarUML6.3.1安装全攻略:从环境配置到破解实战
1. StarUML 6.3.1安装前的准备工作 StarUML作为一款强大的建模工具,在软件开发和系统设计中扮演着重要角色。6.3.1版本在功能和稳定性上都有显著提升,但安装过程可能会让新手感到困惑。在开始安装之前,我们需要做好以下准备工作: …...
Qwen3-0.6B-FP8实战:构建基于操作系统的命令行智能助手
Qwen3-0.6B-FP8实战:构建基于操作系统的命令行智能助手 你有没有过这样的经历?想用命令行完成一个任务,比如“找出所有昨天修改过的日志文件并压缩备份”,却记不清find命令那一长串复杂的参数,或者tar命令的语法又搞混…...
PyTorch模型元数据管理实战:用safetensors和safe_open记录训练信息
PyTorch模型元数据管理实战:用safetensors和safe_open记录训练信息 在机器学习项目的生命周期中,模型训练往往只是冰山一角。真正让一个项目具有长期价值的,是那些隐藏在模型权重背后的故事——超参数的选择、数据集的版本、训练过程中的关键…...
深入解析SSD的FTL:从LBA到PBA的映射机制与优化策略
1. 为什么需要FTL:SSD的"翻译官"工作原理 当你把文件保存到SSD时,操作系统只需要告诉SSD"把数据存到LBA 1234地址",完全不用关心数据实际存放在闪存芯片的哪个物理位置。这个神奇的能力全靠**FTL(闪存转换层&…...
795. 广告标识工厂哪家上门维修最及时?
在当今商业社会,广告标识对于企业的品牌展示和宣传起着至关重要的作用。然而,广告标识在使用过程中难免会出现各种问题,这就需要及时的上门维修服务。那么,广告标识工厂哪家上门维修最及时呢?今天就为大家推荐河北兴盛…...
钉钉H5应用PDF预览避坑指南:为什么iframe直接跳转下载页?
钉钉H5应用PDF预览技术解析:从安全策略到实战解决方案 每次在钉钉H5应用中尝试用iframe嵌套PDF时,那个突如其来的下载对话框总让人措手不及。这背后隐藏的不仅是技术限制,更是一场安全与用户体验的博弈。作为企业内部应用开发者,我…...
StructBERT模型解析:从Transformer到情感分类的技术演进
StructBERT模型解析:从Transformer到情感分类的技术演进 1. 模型架构深度解析 StructBERT作为Transformer架构的重要演进,在自然语言处理领域展现出了独特的技术优势。这个模型最吸引人的地方在于,它在保持BERT强大语言理解能力的同时&…...
OpenClaw隐私保护方案:Qwen3-32B本地推理的医疗数据处理
OpenClaw隐私保护方案:Qwen3-32B本地推理的医疗数据处理 1. 为什么医疗数据需要本地化AI处理 去年参与一个医疗数据分析项目时,我首次意识到数据隐私的严峻性。客户提供的患者诊疗记录包含身份证号、住址和病史等敏感信息,而团队最初考虑使…...
