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

【C++】STL——vector的使用

目录

💕1.vector介绍

💕2.vector的基本用法 

💕3.vector功能的具体用法 (讲解)

💕4.vector——size,capacity函数的使用 (简单略讲)

💕5.resize,reserve函数 

💕6.empty函数 

💕7.front函数,back函数,operator[ ]函数 

💕8.push_back函数,pop_back函数 

💕9.begin函数,end函数 

💕10.rbegin函数,rend函数 

💕11.insert函数,erase函数

💕12.sort函数对vector排序 

💕13.完结


独帜入渊深未知  身似浮萍命难持

(最新更新时间——2025.2.4)

 

💕1.vector介绍

vector 是 C++ 标准模板库(STL)中提供的动态数组容器,能够自动管理内存,支持高效的元素访问和在尾部快速增删元素。与普通数组相比,vector 的大小可以动态调整,是 C++ 中最常用的容器之一。

💕2.vector的基本用法 

vector 的使用需要包含一个头文件

#include<vector>

vector 中有许多我们常见的操作,如下->:


迭代器功能->:

其他功能:

💕3.vector功能的具体用法 (讲解)

接下来会讲解vector中最常用的几种函数用法,先讲解vector的初始化


vector在创建时因为模板的作用,可以指定vector的内容类型,如下->:

#define _CRT_SECURE_NO_WARNINGS 
#include<vector>
#include<string>
#include<iostream>
using namespace std;
int main()
{vector<int> a1 = { 1,2,3 };vector<double> a2 = { 2 };vector<string> a3 = { "hello","world" };vector<char> s1 = { 'c' };vector<int> b1(2);//也可以如下初始化,但不推荐vector<int> b2(2,3);
}

可以指定是int,double,char或者string类型

💕4.vector——size,capacity函数的使用 (简单略讲)

size函数用来返回顺序表(vector)中的有效值

capacity用来返回顺序表(vector)中的容量

maxsize用来表示顺序表(vector)的最大有效值是多少


代码如下->:

#define _CRT_SECURE_NO_WARNINGS 
#include<vector>
#include<string>
#include<iostream>
using namespace std;
int main()
{vector<int> a1 = { 1,2,3,4 };cout << a1.size()<<endl;//打印4cout << a1.capacity() << endl;//打印4cout << a1.max_size() << endl;//打印一个巨大的数
}

💕5.resize,reserve函数 

resize函数可以更改顺序表中的有效值(size)个数,并且如果更改后的size个数大于原size个数,可以将新开辟的size初始化一个值(注意是可以,不是一定,需要用户显示写)


我们用代码为例

可以看到,我们更改了size的个数,接下来进行别的测试


这次,我们更改后的size个数比原来的size大,我们显示的将新开辟的size全部初始化为9,注意一定是新开辟的size初始化,如果我们更改后的size比原来的小是不会有作用的,如下:


接下来: reserve 函数是用来更改顺序表中的capacity大小的,它被称为预留空间,它只会扩大capacity,并不会缩小capacity,并且不会将新开辟的capacity初始化,我们以代码为例


这里的遍历顺序表没有意义,不用在意

💕6.empty函数 

empty函数用来判断顺序表是否为空,它返回的值是bool类型

💕7.front函数,back函数,operator[ ]函数 

front函数用来返回顺序表的第一个有效值

back函数用来返回顺序表的最后一个有效值

operator[ ]供我们可以用下标访问顺序表中的内容


代码如下->:

💕8.push_back函数,pop_back函数 

push_back用来实现顺序表的尾插


pop_back用来实现顺序表的尾删


代码如下->:


💕9.begin函数,end函数 

begin函数与end函数都为迭代器类型,我们可以把它理解为指针一样的东西

begin()返回的是顺序表的首地址,end()返回的是顺序表中最后一个元素的下一个位置


虽然它们的返回类型不是指针,但我们可以像使用指针一样使用它


可以理解为指针一样的存在,但是并不是指针


用它们我们可以实现遍历

💕10.rbegin函数,rend函数 

rbegin函数与rend函数一样都是迭代器类型,并且依旧可以像指针一样使用

只不过rbegin与rend所指的位置调过来了

rbegin函数返回的是顺序表中最后一个元素的下一个位置

rend()返回的是顺序表的首地址


rbegin的++被重载了,也就是说rbegin函数的++实际上是我们正常使用的--,而rbegin的--实际上就是我们正常使用的++

rend同理

💕11.insert函数,erase函数

 insert函数用来实现在某一位置插入数据

erase函数用来实现在某一位置删除数据,也可以全部删除


这里需要特别注意,insert与erase函数所指的位置,并不是我们常用的下标,而是迭代器返回的位置,我们先看代码->:


💕12.sort函数对vector排序 

我们如果想对vector函数排序,可以使用std里面的sort函数排序,并且可以选择升序或者降序,示例如下->:需要注意的是sort函数需要的是迭代器类型


默认是升序的结果,如果想要降序就要用到一个函数,并添加到sort函数里

 std::greater<int>()

如何使用?

 

这样就变为降序了

💕13.完结

相关文章:

【C++】STL——vector的使用

目录 &#x1f495;1.vector介绍 &#x1f495;2.vector的基本用法 &#x1f495;3.vector功能的具体用法 &#xff08;讲解&#xff09; &#x1f495;4.vector——size&#xff0c;capacity函数的使用 &#xff08;简单略讲&#xff09; &#x1f495;5.resize&#xff…...

springboot/ssm互联网智慧医院体检平台web健康体检管理系统Java代码编写

springboot/ssm互联网智慧医院体检平台web健康体检管理系统Java代码编写 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&am…...

介绍一下Mybatis的Executor执行器

Executor执行器是用来执行我们的具体的SQL操作的 有三种基本的Executor执行器&#xff1a; SimpleExecutor简单执行器 每执行一次update或select&#xff0c;就创建一个Statement对象&#xff0c;用完立刻关闭Statement对象 ReuseExecutor可重用执行器 可重复利用Statement…...

Wide Deep 模型:记忆能力与泛化能力

实验和完整代码 完整代码实现和jupyter运行&#xff1a;https://github.com/Myolive-Lin/RecSys--deep-learning-recommendation-system/tree/main 引言 Wide & Deep 模型是一种结合了线性模型&#xff08;Wide&#xff09;和深度神经网络&#xff08;Deep&#xff09;的混…...

Hot100之矩阵

73矩阵置零 题目 思路解析 收集0位置所在的行和列 然后该行全部初始化为0 该列全部初始化为0 代码 class Solution {public void setZeroes(int[][] matrix) {int m matrix.length;int n matrix[0].length;List<Integer> list1 new ArrayList<>();List<…...

Python语言的安全开发

Python语言的安全开发 引言 在信息技术迅速发展的今天&#xff0c;网络安全问题愈发凸显。随着Python语言的广泛应用&#xff0c;尤其是在数据分析、人工智能、Web开发等领域&#xff0c;其安全问题越来越受到重视。Python作为一门高效且易于学习的编程语言&#xff0c;虽然在…...

蓝桥杯刷题DAY3:Horner 法则 前缀和+差分数组 贪心

所谓刷题&#xff0c;最重要的就是细心 &#x1f4cc; 题目描述 在 X 进制 中&#xff0c;每一数位的进制不固定。例如&#xff1a; 最低位 采用 2 进制&#xff0c;第二位 采用 10 进制&#xff0c;第三位 采用 8 进制&#xff0c; 则 X 进制数 321 的十进制值为&#xff…...

java项目验证码登录

1.依赖 导入hutool工具包用于创建验证码 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.5.2</version></dependency> 2.测试 生成一个验证码图片&#xff08;生成的图片浏览器可…...

手写MVVM框架-环境搭建

项目使用 webpack 进行进行构建&#xff0c;初始化步骤如下: 1.创建npm项目执行npm init 一直下一步就行 2.安装webpack、webpack-cli、webpack-dev-server&#xff0c;html-webpack-plugin npm i -D webpack webpack-cli webpack-dev-server html-webpack-plugin 3.配置webpac…...

2025年2月2日(网络编程 tcp)

tcp 循环服务 import socketdef main():# 创建 socket# 绑定tcp_server socket.socket(socket.AF_INET, socket.SOCK_STREAM)tcp_server.bind(("", 8080))# socket 转变为被动tcp_server.listen(128)while True:# 产生专门为链接进来的客户端服务的 socketprint(&qu…...

【Docker项目实战】使用Docker部署MinIO对象存储(详细教程)

【Docker项目实战】使用Docker部署MinIO对象存储 前言一、 MinIO介绍1.1 MinIO简介1.2 主要特点1.3 主要使用场景二、本次实践规划2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本四、下载MinIO镜像五、…...

使用ollama本地部署Deepseek r1

1、下载ollama 在浏览器地址输入&#xff1a;https://ollama.com/ 选择windows版本的下载 2、安装ollama 3、运行ollama 安装完成后&#xff0c;打开命令行工具win r 在命令行输入&#xff1a;ollama 4、使用ollama下载并部署Deepseed r1 在ollama网站&#xff0c;下载…...

Unity飞行代码 超仿真 保姆级教程

本文使用Rigidbody控制飞机&#xff0c;基本不会穿模。 效果 飞行效果 这是一条优雅的广告 如果你也在开发飞机大战等类型的飞行游戏&#xff0c;欢迎在主页搜索博文并参考。 搜索词&#xff1a;Unity游戏(Assault空对地打击)开发。 脚本编写 首先是完整代码。 using System.Co…...

DeepSeek蒸馏模型:轻量化AI的演进与突破

目录 引言 一、知识蒸馏的技术逻辑与DeepSeek的实践 1.1 知识蒸馏的核心思想 1.2 DeepSeek的蒸馏架构设计 二、DeepSeek蒸馏模型的性能优势 2.1 效率与成本的革命性提升 2.2 性能保留的突破 2.3 场景适应性的扩展 三、应用场景与落地实践 3.1 智能客服系统的升级 3.2…...

使用 sunshine+moonlight 配置串流服务无法使用特殊键

最近了解到串流技术&#xff0c;使用的方案是 sunshine 为串流服务端&#xff0c;moonlight 为客户端&#xff0c;分别在 ipad&#xff0c;android&#xff0c;tv 端安装。 存在的问题 不管说什么平台都会有特殊键无法使用的问题&#xff0c;最初我发现在安卓电视&#xff0c…...

5.角色基础移动

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 角色的xyz轴与移动方向拌合输入轴值add movement inputget controller rotationget right vectorget forward vector 发现模型的旋转改变后&#xff0c;xyz轴也会改变&#xff0c;所以需要旋转值来计算xyz轴方向。 …...

单细胞-第四节 多样本数据分析,下游画图

文件在单细胞\5_GC_py\1_single_cell\2_plots.Rmd 1.细胞数量条形图 rm(list ls()) library(Seurat) load("seu.obj.Rdata")dat as.data.frame(table(Idents(seu.obj))) dat$label paste(dat$Var1,dat$Freq,sep ":") head(dat) library(ggplot2) lib…...

Linux的循环,bash的循环

Linux的循环,bash的循环 在 Linux 系统中&#xff0c;Bash 循环是最常用的循环实现方式&#xff08;Bash 是 Linux 默认的 Shell&#xff09;&#xff0c;但广义上“Linux 的循环”可能涉及其他 Shell 或编程语言的循环结构。以下是 Bash 循环的详细解析及其在 Linux 环境中的…...

【DeepSeek开发】Python实现股票数据可视化

代码&#xff1a; Github&#xff1a;Python实现股票数据可视化代码https://github.com/magolan2000/Data-visualization/tree/master 软件环境&#xff1a;PyCharm 2022.3.1 数据来源&#xff1a;akshare 最近DeepSeek可谓是热度不断&#xff0c;因此想评判一下DeepSeek的编程…...

华为小米vivo向上,苹果荣耀OPPO向下

日前&#xff0c;Counterpoint发布的手机销量月度报告显示&#xff0c;中国智能手机销量在2024年第四季度同比下降3.2%&#xff0c;成为2024年唯一出现同比下滑的季度。而对于各大智能手机品牌来说&#xff0c;他们的市场份额和格局也在悄然发生变化。 华为逆势向上 在2024年第…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...