C++—vector的常见接口与用法(正式进入STL)

news2025/1/20 20:03:46

目录

0.提醒

1.介绍

2.构造

1.正常构造

2.默认值构造

3.调用默认构造函数构造

3.遍历

1.迭代器

2.范围for

3.下标访问

4.容量

1.capacity:返回当前容器的容量

2.reserve:如果传的k比当前容量大,则扩容到比k大或者等于k的数;如果传的k比当前容量小也不会缩容(这点区别string,string中是可能缩容的)

5.resize:改变有效数据个数(如果传的k比当前有效数据个数大,则会增加指定数据;如果传的k比当前有效数据个数小,则会删除末尾的数据)

1.删除数据

2.增加数据

1.按照默认值或者调用默认构造函数(增加自定义类型时)增加数据

2.按照指定数据增加数据

6.增删系列

1.insert:插入数据(只支持迭代器区间了)

2.erase:删除数据(只支持迭代器区间)

3.push_back:尾插一个数据

7.swap:交换对象中的成员变量

8.clear:清除数据

9.vector的输入输出

1.输入

2.输出

10.二维数组


0.提醒

STL比较详细的部分功能介绍(包括迭代器等等)放在我的STL专栏中的string部分进行详细地讲解了,如果是初次接触STL部分的兄弟,建议先把我的string中涉及STL基础的部分先看完再来看这一篇,感谢观看!!!

1.介绍

C++中的vector就是顺序表

2.构造

1.正常构造

//拿10个1构造顺序表
vector<int> v1(10, 1);

//拿迭代器区间构造顺序表
vector<int> v2(v1.begin() + 1, v1.end() - 1);

//拷贝构造
vector<int> v3(v2);

2.默认值构造

//按照5个默认值构造
vector<int> v1(5);
for (auto v : v1)
	cout << v << ' ';

结果:

3.调用默认构造函数构造

//构造了能存5个vector对象的顺序表,第二个参数没有填,
// 就是调用的默认构造,里面的5个顺序表都是空的
vector<vector<int>> vv(5);

3.遍历

1.迭代器

//迭代器
vector<int>::iterator it = v2.begin();
while (it != v2.end())
{
	cout << *it<<' ';
	it++;
}

2.范围for

//范围for
for (auto v : v2)
	cout << v << ' ';

3.下标访问

//下标访问
for (int i = 0;i < v2.size();i++)
	cout << v2[i] << ' ';

4.容量

1.capacity:返回当前容器的容量

cout<<v1.capacity();

2.reserve:如果传的k比当前容量大,则扩容到比k大或者等于k的数;如果传的k比当前容量小也不会缩容(这点区别string,string中是可能缩容的)

v1.reserve(100);
cout<<v1.capacity();

5.resize:改变有效数据个数(如果传的k比当前有效数据个数大,则会增加指定数据;如果传的k比当前有效数据个数小,则会删除末尾的数据)

1.删除数据

//拿10个1构造顺序表
vector<int> v1(10, 1);

//删除后面的4个数据
v1.resize(6);

//范围for
for (auto v : v1)
	cout << v << ' ';

结果:

2.增加数据

1.按照默认值或者调用默认构造函数(增加自定义类型时)增加数据

//拿10个1构造顺序表
vector<int> v1(10, 1);

//增加5个默认值
v1.resize(15);

//范围for
for (auto v : v1)
	cout << v << ' ';

结果:

2.按照指定数据增加数据

//拿10个1构造顺序表
vector<int> v1(10, 1);

//增加5个2
v1.resize(15,2);

//范围for
for (auto v : v1)
	cout << v << ' ';

结果:

6.增删系列

1.insert:插入数据(只支持迭代器区间了)

//拿10个1构造顺序表
vector<int> v1(10, 1);

//在下标为4的位置插入2个3
v1.insert(v1.begin() + 4, 2, 3);

//范围for
for (auto v : v1)
	cout << v << ' ';

结果:

2.erase:删除数据(只支持迭代器区间)

3.push_back:尾插一个数据

7.swap:交换对象中的成员变量

vector<int> v1(10, 1);
vector<int> v2(10, 2);
v1.swap(v2);

//范围for
for (auto v : v1)
	cout << v << ' ';

结果:

8.clear:清除数据

vector<int> v1(10, 1);
v1.clear();

//范围for
for (auto v : v1)
	cout << v << ' ';

结果:输出为空

9.vector的输入输出

由于vector没有重载流插入与流提取,所以我们采用别的输入输出方法。

1.输入

//先构造能存5个数据的顺序表,然后再遍历这个顺序表对每个空间进行输入
vector<int> v1(5, 5);
for (int i = 0;i < v1.size();i++)
	cin >> v1[i];

2.输出

//先构造能存5个数据的顺序表,然后再遍历这个顺序表对每个空间进行输入
vector<int> v1(5, 5);
for (int i = 0;i < v1.size();i++)
	cin >> v1[i];

//范围for进行输出
for (auto v : v1)
	cout << v << ' ';

代码运行:

10.二维数组

vector<int> v1(6, 1);

//这个顺序表里存的是5个vector对象,相当于5行6列的二维数组
vector<vector<int>> v2(5, v1);

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为人机交互保持预见性丨基于G32A1445的T-BOX应用方案

T-BOX是一种集成了通信、计算和控制功能的车载信息处理终端&#xff0c;通过车辆与云端、移动网络等进行数据交互&#xff0c;用于车、人、外部环境的互联互通&#xff0c;支持车辆定位、车载通信、远程控制、故障诊断、数据传输、紧急呼叫等功能&#xff0c;帮助车辆实现更加智…

2023北华大学程序设计新生赛部分题解

时光如流水般逝去&#xff0c;我已在校园中奋战大二&#xff01;(≧▽≦) 今天&#xff0c;静静回顾去年的新生赛&#xff0c;心中涌起无尽感慨&#xff0c;仿佛那段青春岁月如烟花般绚烂。✧&#xff61;(≧▽≦)&#xff61;✧ 青春就像一场燃烧的盛宴&#xff0c;激情澎湃&…

什么情况下会导致索引失效?

什么情况下会导致索引失效&#xff1f; 1. 组合索引非最左前缀2. LIKE查询%开头3. 字符串未加引号4. 不等比较5. 索引列运算6. OR连接查询 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1. 组合索引非最左前缀 描述&#xff1a;在组合索引…

基于springboot的驾校管理系统的设计与实现 (含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于springboot的驾校管理系统4拥有三种角色&#xff0c;分别为管理员、教练、学员。 管理员&#xff1a;学员/教练管理、报名管理、车辆管理、教练分配管理、课程安排管理、考勤打卡管理…

【HTTP】构造HTTP请求和状态码

状态码 用于响应中&#xff0c;表示响应的结果如何 正确&#xff1f;错误&#xff1f;什么原因&#xff1f; HTTP 中的状态码都是标准约定好的 200 OK 成功了&#xff0c;一切顺利 在抓包到的响应中 404 Not Found 访问的资源&#xff08;URL 中的路径&#xff09;没找…

想要让ai做ppt?试试这四个!

今天咱们来聊点新鲜的&#xff0c;就是那些能让我们从繁琐的PPT制作中解脱出来的智能工具。你是否还在为制作PPT熬夜到天亮&#xff1f;别担心&#xff0c;我这就带你看看目前市面上最火的几款智能PPT生成工具&#xff0c;它们的表现如何呢&#xff1f;让我们一探究竟&#xff…

BUUCTF逆向wp [WUSTCTF2020]Cr0ssfun

第一步 查壳&#xff0c;本题是64位&#xff0c;无壳。 第二步 查看主函数&#xff0c;点开看主函数&#xff0c;没什么东西。 左边表里面看到好几个i开头的函数&#xff08;红色方框里面&#xff09;&#xff0c;点开看后每个函数的最后末尾&#xff08;图中红色椭圆圈那里&a…

MyBatis-config.xml核心配置

MyBatis-config.xml 包含了会深深影响MyBatis行为的设置和属性信息&#xff0c;配置文档的顶层结构如下 environments&#xff08;环境配置&#xff09; environments用于配置数据库的URL信息&#xff0c;MyBatis-config可以动态配置多个数据源&#xff0c;用于连生产、预发、…

(done) 声音信号处理基础知识(4)

来源&#xff1a;https://www.youtube.com/watch?vdaB9naGBVv4 模拟信号特点如下 时域连续(x轴) 振幅连续(y轴) 如下是模拟信号的一个例子&#xff1a; 数字信号特点如下&#xff1a; 一个离散值序列 数据点的值域是一系列有限的值 ADC&#xff1a;模拟信号到数字信号的…

媒体动态:播客增长的重大转变、社交媒体创新和搜索动态

关键亮点&#xff1a; 关键亮点&#xff1a; 电视和音频&#xff1a;播客继续迅速增长&#xff0c;但主要由少数几档节目驱动。付费社交&#xff1a;Meta在最新的一次成功财报电话会议后继续加倍推进AI进展&#xff0c;X起诉GARM和广告商反垄断&#xff0c;Snap的订阅计划继续…

6.网络加密与密钥管理

“网络加密与密钥管理”主要介绍了网络加密与密钥管理的各个方面,包括网络加密的四种模式、密钥管理的基本概念、密钥的生成与分配方法、密钥的保护、存储与备份、层次化密钥管理方法以及密钥管理系统的组成。 四种网络加密模式的原理、特点:链路加密:对网络中两个相邻节点…

OpenGL渲染管线(Rendering Pipeline)介绍

渲染管线 计算机图形学中&#xff0c;计算机图形管线&#xff08;渲染管线 或简称 图形管线、流水线&#xff09;是一个概念模型&#xff0c;它描述了t图像系统将 3D场景渲染到2D屏幕所需执行的一系列步骤。渲染管线大的可以分为三个阶段。 &#xff08;一&#xff09;应用阶段…

基于SpringBoot+Vue+MySQL的手机销售管理系统

系统展示 用户前台界面 管理员后台界面 商家后台界面 系统背景 随着智能手机的普及和市场竞争的日益激烈&#xff0c;手机销售行业面临着前所未有的挑战与机遇。传统的手工记录和简单的电子表格管理方式已难以满足现代手机销售业务的需求&#xff0c;销售数据的混乱和管理效率低…

小程序地图展示poi帖子点击可跳转

小程序地图展示poi帖子点击可跳转 是类似于小红书地图功能的需求 缺点 一个帖子只能有一个点击事件&#xff0c;不适合太复杂的功能&#xff0c;因为一个markers只有一个回调回调中只有markerId可以使用。 需求介绍 页面有地图入口&#xff0c;点开可打开地图界面地图上展…

ftrace - 几种tracer的打印例子

ftrace - Function Tracer — The Linux Kernel documentation【原创】Ftrace使用及实现机制 - 沐多 - 博客园 (cnblogs.com) latency format nop tracer和function tracer下&#xff0c;latency format的时间戳是相对开始trace的时间&#xff0c;non-latency format的时间戳是…

面向对象例题之例题的特性

答案&#xff1a;C 解析&#xff1a;对象里面的方法和属性数量是不确定的&#xff0c;可以不断扩展写多个属性和方法 清洗的边界是对象必备的&#xff0c;哪些是这个类的&#xff0c;哪些是其他类的都有体现。 良好的定义行为一般指定义良好的属性和方法 可扩展性指的是子类…

面向对象设计原则例题

答案&#xff1a;B A C D D C 知识点&#xff1a; 面向对象设计7大原则 单一职责原则 设计目的单一的类 开放—封闭原则 对外扩展开放&#xff0c;对修改封闭 里氏替换原则 子类可以替换父类 依赖倒置原则 要依赖于抽象&#xff0c;而不是具体的实现&#xff1b;针对接…

万字长文——ConvNeXt(2022CVPR),卷积网络的顶峰之作,在Transformer盛行的当下,卷积网络还能再战!

ConvNext:A ConvNet for the 2020s ConvNext:2020 年代的卷积神经网络 论文地址: https://arxiv.org/pdf/2201.03545 自从Transformer成功应用在视觉领域并且取得显著成绩后,很多人开始抛弃卷积网络架构,转而使用Transformer。然而有的大佬不认为卷积过时了,于是有了这篇…

OpenGL 原生库6 坐标系统

概述 为了将坐标从一个坐标系变换到另一个坐标系&#xff0c;我们需要用到几个变换矩阵&#xff0c;最重要的几个分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space)&#xff0c;在这里它称为局部坐标(Local Coordinate)&a…

内网渗透之中间人欺骗攻击-ARP攻击

ARP攻击 ARP协议简介 ARP全称为Address Resolution Protocol&#xff0c;即地址解析协议&#xff0c;它是一个根据IP地址获取物理地址的TCP/IP协议&#xff0c;主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机&#xff0c;并接收返回消息&#xff0c;以此确定…