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

目录

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.xdnf.cn/news/146774.html

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

相关文章

车载软件调试工具系列---Trace32简介UI界面简介

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

二叉搜索树的使用及其详细解析

1.概念 ⼆叉搜索树⼜称⼆叉排序树&#xff0c;它或者是⼀棵空树&#xff0c;或者是具有以下性质的⼆叉树: • 若它的左⼦树不为空&#xff0c;则左⼦树上所有结点的值都⼩于等于根结点的值 • 若它的右⼦树不为空&#xff0c;则右⼦树上所有结点的值都⼤于等于根结点的值 • 它…

JDK如何下载源码?

文章目录 JDK如何下载源码&#xff1f;JDK源码介绍下载JDK源码idea配置源码路径 JDK如何下载源码&#xff1f; JDK&#xff08;Java Development Kit&#xff09;是开发Java应用程序的基础工具包&#xff0c;包含了编译、运行和调试Java应用程序所需的所有工具。JDK源码主要指…

2024年中国研究生数学建模竞赛D题大数据驱动的地理综合问题

2024年中国研究生数学建模竞赛D题 大数据驱动的地理综合问题 地理系统是自然、人文多要素综合作用的复杂巨系统[1-2]&#xff0c;地理学家常用地理综合的方式对地理系统进行主导特征的表达[3]。如以三大阶梯概括中国的地形特征&#xff0c;以秦岭—淮河一线和其它地理区划的方…

2024华为杯研究生数学建模C题【数据驱动下磁性元件的磁芯损耗建模】思路详解

问题一 励磁波形分类 励磁波形作为影响磁芯性能的核心要素之一&#xff0c;其形态深刻影响着磁芯的损耗特性。励磁波形的独特形状直接塑造了磁芯内部磁通的动态行为&#xff0c;不同的波形轮廓影响了磁通密度随时间的变化速率&#xff0c;导致其损耗特性呈现出显著差异。因此&…

【操作系统】01.冯·诺伊曼体系结构

上面这张图就是我们经常能在各种教材中看到的冯诺伊曼体系结构。我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。 一、认识设备 输入设备&#xff1a; 键盘、鼠标、网卡、磁盘、摄像头…… 输出设备&a…

新峰商城之订单(一):确认页面开发

新峰商城订单从生成到处理结束&#xff0c;主要以下几个流程&#xff1a; &#xff08;1&#xff09;提交订单&#xff08;商城用户发起&#xff09; &#xff08;2&#xff09;订单入库&#xff08;后台逻辑&#xff09; &#xff08;3&#xff09;支付订单&#xff08;商城…

C++_多态

C_多态 多态的概念 通俗来讲&#xff0c;就是多种形态。多态分为编译时多态&#xff08;静态多态&#xff09;和运行时多态&#xff08;动态多态&#xff09;。 编译时多态主要就是函数重载和函数模板&#xff0c;他们传不同类型的参数就可以调用不同的函数&#xff0c;通过…

简单有效关于msvcp140.dll丢失的解决方法,msvcp140.dll

这篇文章将和大家分享几种msvcp140.dll丢失的解决方法&#xff0c;分析解决方法为什么能够通过这种方法进行修复成功&#xff0c;有效的将丢失的msvcp140.dll文件进行修复完成。 msvcp140.dll丢失&#xff1f;简单有效的解决途径 一、重新安装相关软件 原理 许多应用程序在安…

研究生数学建模竞赛E题思路模型参考文献高速公路应急车道紧急启用模型——高速公路饱和路段动态应急车道开放决策模型研究

1 概述 动态应急车道 ( Hard Shoulder Running ) 作为 调整路段交通流运行现状的重要管理手段&#xff0c; 可以在短时间内提供道路供给&#xff0c; 有效提升瓶颈路段的通行 能力。 早在 21 世纪初 &#xff0c; 欧美国家就已经通过开放 应急车道缓解的方式来解决路段的交…

2024最受人追捧的电脑远程控制软件推荐!首选这五款!好用、连接稳定、安全性高!

在2024年&#xff0c;电脑远程控制软件市场上涌现了众多受欢迎且功能强大的选择。 以下是根据最新信息推荐的五款好用、连接稳定、安全性高的电脑远程控制软件&#xff1a; 1. 安企神 特点&#xff1a;它是全球知名的远程控制软件&#xff0c;以其稳定性和可靠性著称。 它支…

C++——初步认识C++和namespace的用法

1.编程语言排行榜 我们通过排行可以看出 C在变成语言中还是占据着重要的地位 2.C在工作领域中的应用 1.PC客户端开发。⼀般是开发Windows上的桌面软件&#xff0c;比如WPS之类的&#xff0c;技术栈的话⼀般是C和 QT&#xff0c;QT 是⼀个跨平台的 C图形用户界面&#xff08;G…

sourceTree使用脚本一键push代码到gerrit

问题 在gerrit,我们无法直接把代码push到对应的分支。需要把代码push到 HEAD:refs/for/branch,review通过后再submit到分支。所以无法直接使用sourceTree上的推送按钮来push代码。但是可以通过自定义操作和脚本来实现这一功能。 脚本编写 新建文本文档写入以下内容&#xff…

fmql之ubuntu添加dhcp服务

按照官方指示&#xff1a;【在文末】 2024-08-22 buildroot linux 使用wpa_supplicant -B -i wlan0 切换WIFI 设备之后无法上网的问题。解决方法&#xff0c;使用udhcpc -i wlan0 命令-CSDN博客 网口连接路由器&#xff0c;然后发现路由器分配了ip&#xff0c;但是板卡没有配置…

VulnHub-Narak靶机笔记

Narak靶机笔记 概述 Narak是一台Vulnhub的靶机&#xff0c;其中有简单的tftp和webdav的利用&#xff0c;以及motd文件的一些知识 靶机地址&#xff1a; https://pan.baidu.com/s/1PbPrGJQHxsvGYrAN1k1New?pwda7kv 提取码: a7kv 当然你也可以去Vulnhub官网下载 一、nmap扫…

写作练习(一)

一、reply Z-Library The aim is to express gratitude and practice writing, and as a record. 二、Original letter As a college student of computer and a blogger, Z-Library is always a part of my study, which provide many books that I need pay a lost of time …

安捷伦Agilent/keysight 53220A参数资料 通用频率计 计数器

Agilent 53220A&#xff0c;Keysight 53220A&#xff0c;通用频率计数器/计时器&#xff0c;350 MHz&#xff0c;12 位&#xff0c;100 ps 53220A 350 MHz 通用频率计数器/计时器是一款双通道频率计数器&#xff0c;能够执行所需的全部频率和时间间隔测量。它可以添加可选的射…

突破常规:如何利用动态系统思维彻底变革你的团队!

引言 在现代社会中&#xff0c;变化是唯一不变的。面对快速发展的科技和瞬息万变的市场环境&#xff0c;企业和开发团队必须具备适应性和灵活性。动态系统思维作为一种理解和应对复杂系统中变化的方法&#xff0c;提供了有效的解决方案。本文将探讨动态系统思维在敏捷方法中的应…

load jsonl File with OpenAI API request results to pandas data.frame

题意&#xff1a;将包含 OpenAI API 请求结果的 jsonl 文件加载到 pandas DataFrame 中 问题背景&#xff1a; I have a large data set containing around 500k observation. It has a string variable that I want to create an embedding for. I used the OpenAI API to cr…

AI入门系列 | 如何优雅地下载最前沿的模型?

​简介 一片白云横谷口&#xff0c;几多归鸟尽迷巢。 小伙伴们好&#xff0c;我是微信公众号《小窗幽记机器学习》的小编&#xff1a;卖铁观音的小男孩。本系列主要基于过往经历&#xff0c;总结当时自身环境中实操经验。倘若能够顺便帮到他人&#xff0c;也是善莫大焉。 本文…