c++ vector 用法总结

2023-05-16

vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C++ STL的一个重要成员,使用它时需要包含头文件:#include<vector>;

一、vector 的初始化:可以有五种方式,举例说明如下:

(1) vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。
   (2)vector<int> a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1
   (3)vector<int> a(b); //用b向量来创建a向量,整体复制性赋值
   (4)vector<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素
   (5)int b[7]={1,2,3,4,5,9,8};
        vector<int> a(b,b+7); //从数组中获得初值

二、vector对象的几个重要操作,举例说明如下:

(1)a.assign(b.begin(), b.begin()+3); //b为向量,将b的0~2个元素构成的向量赋给a
    (2)a.assign(4,2); //是a只含4个元素,且每个元素为2
    (3)a.back(); //返回a的最后一个元素
    (4)a.front(); //返回a的第一个元素
    (5)a[i]; //返回a的第i个元素,当且仅当a[i]存在2013-12-07
    (6)a.clear(); //清空a中的元素
    (7)a.empty(); //判断a是否为空,空则返回ture,不空则返回false
    (8)a.pop_back(); //删除a向量的最后一个元素
    (9)a.erase(a.begin()+1,a.begin()+3); //删除a中第1个(从第0个算起)到第2个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+         3(不包括它)
    (10)a.push_back(5); //在a的最后一个向量后插入一个元素,其值为5
    (11)a.insert(a.begin()+1,5); //在a的第1个元素(从第0个算起)的位置插入数值5,如a为1,2,3,4,插入元素后为1,5,2,3,4
    (12)a.insert(a.begin()+1,3,5); //在a的第1个元素(从第0个算起)的位置插入3个数,其值都为5
    (13)a.insert(a.begin()+1,b+3,b+6); //b为数组,在a的第1个元素(从第0个算起)的位置插入b的第3个元素到第5个元素(不包括b+6),如b为1,2,3,4,5,9,8         ,插入元素后为1,4,5,9,2,3,4,5,9,8
    (14)a.size(); //返回a中元素的个数;
    (15)a.capacity(); //返回a在内存中总共可以容纳的元素个数
    (16)a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,其值随机
    (17)a.resize(10,2); //将a的现有元素个数调至10个,多则删,少则补,其值为2
    (18)a.reserve(100); //将a的容量(capacity)扩充至100,也就是说现在测试a.capacity();的时候返回值是100.这种操作只有在需要给a添加大量数据的时候才         显得有意义,因为这将避免内存多次容量扩充操作(当a的容量不足时电脑会自动扩容,当然这必然降低性能) 
    (19)a.swap(b); //b为向量,将a中的元素和b中的元素进行整体性交换
    (20)a==b; //b为向量,向量的比较操作还有!=,>=,<=,>,<

三、顺序访问vector的几种方式,举例说明如下:
(1)向向量a中添加元素


1  vector<int> a;
2 for(int i=0;i<10;i++)
3 a.push_back(i);  

2、也可以从数组中选择元素向向量中添加


int a[6]={1,2,3,4,5,6};
vector<int> b;
for(int i=1;i<=4;i++)
b.push_back(a[i]);  

3、也可以从现有向量中选择元素向向量中添加


int a[6]={1,2,3,4,5,6};
vector<int> b;
vector<int> c(a,a+4);
for(vector<int>::iterator it=c.begin();it<c.end();it++)
b.push_back(*it);
  

4、也可以从文件中读取元素向向量中添加


ifstream in("data.txt");
vector<int> a;
for(int i; in>>i)
    a.push_back(i);
  

5、【误区】


vector<int> a;
for(int i=0;i<10;i++)
    a[i]=i;  

//这种做法以及类似的做法都是错误的。刚开始我也犯过这种错误,后来发现,下标只能用于获取已存在的元素,而现在的a[i]还是空的对象

(2)从向量中读取元素
1、通过下标方式读取


int a[6]={1,2,3,4,5,6};
vector<int> b(a,a+4);
for(int i=0;i<=b.size()-1;i++)
    cout<<b[i]<<" ";
  

2、通过遍历器方式读取


int a[6]={1,2,3,4,5,6};
vector<int> b(a,a+4);
for(vector<int>::iterator it=b.begin();it!=b.end();it++)
    cout<<*it<<" ";
  

四、几种重要的算法,使用时需要包含头文件:#include<algorithm>

(1)sort(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素进行从小到大排列
(2)reverse(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素倒置,但不排列,如a中元素为1,3,2,4,倒置后为4,2,3,1
(3)copy(a.begin(),a.end(),b.begin()+1); //把a中的从a.begin()(包括它)到a.end()(不包括它)的元素复制到b中,从b.begin()+1的位置(包括它)开        始复制,覆盖掉原有元素
(4)find(a.begin(),a.end(),10); //在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++ vector 用法总结 的相关文章

  • selenium.common.exceptions.WebDriverException: Message: "Can't load the profile.

    记录一下 xff0c Selenium在最新版本中修好了这个问题 运行CMD xff0c 然后输入 pip install U selenium
  • 网页跳转(APP内/浏览器)

    APP内网页跳转 xff1a xml lt WebView android layout below 61 span class hljs string 34 64 id lunbo 34 span android layout width
  • Intellij IDEA Resource Bundle

    Resource Bundle是什么 可以直接通过官方的描述来了解 https www jetbrains com hel Resource bundle is a set of properties files that have sam
  • H3C配置日志主机

    华三网络设备信息级别共有8级 xff0c 从高到底分别为emergencies alerts critical errors warnings notifications infomational debugging 信息级别数值描述eme
  • MIUI11系统怎么样刷入开发版获得Root超级权限

    小米的手机或平板不同手机型号一般情况下官网都提供两个不同的安卓系统版本 xff0c 可分为稳定版和开发版 xff0c 稳定版没有提供root权限管理 xff0c 开发版中就开启了root权限 xff0c 很多时候我们需要使用的一些功能强大的
  • 一起来看React(路由守卫)

    我们在很多时候都会接触到路由守卫 gt 无论是不是做 代码小子 的人 我们在浏览各网页时会看到头部的网址 如 xff1a 当我们在逛 xff1a 淘宝 天猫 京东 这一类的网站时我们自定义输入地址时 我们应该先登录 如果没登录我们应该跳转到
  • filezilla无法启动传输及严重文件传输错误

    filezilla无法启动传输 严重文件传输错误 文件夹权限不够 xff0c 修改之 你的空间或服务器已经满了 xff0c 请空下回收站或者扩容 文件正在被占用 xff0c 关闭后传输 转载于 https www cnblogs com w
  • 用KeyTool生成安全证书

    详细请见 xff1a Tomcat的帮助文档 xff0c xff1a https localhost 8080 tomcat docs ssl howto html 1 用keytool 生成证书 xff1a keytool genkey
  • Scheduling and emailing PeopleSoft Query results

    You could E Mail the Query results by embedding the paramters in a nVision Layout Create a Tabular nVision Layout Add th
  • VS2022 添加 dll 库文件

    参考链接 Visual Studio中的C 43 43 程序如何使用第三方静态库和动态库 xff1f 掘金 1 xff0c 添加库文件路径 在 Visual Studio 2022 中 xff0c 可以通过在项目属性页面中添加库文件的目录
  • OD常用断点(转载)

    常用断点 OD中 拦截窗口 xff1a bp CreateWindow 创建窗口 bp CreateWindowEx A 创建窗口 bp ShowWindow 显示窗口 bp UpdateWindow 更新窗口 bp GetWindowTe
  • Linux curl 命令模拟 POST/GET 请求

    curl 命令 xff0c 是一个利用URL规则在命令行下工作的文件传输工具 curl 支持文件的上传和下载 xff0c 所以是综合传输工具 xff0c 但按传统 xff0c 习惯称curl为下载工具 作为一款强力工具 xff0c curl
  • WINserver路由服务之多网段管控

    前几天 xff0c 看见了一个朋友写的一篇文章 实现win2003路由功能 看了之后的感觉是 xff0c 只写了路由功能的安装部分 xff0c 对于功能实现之后的应用 xff0c 没怎么谈到 于是跟他交流了一下下 然后也建议他来看看我的那篇
  • ubuntu环境下实现 多线程的socket(tcp) 通信

    改改就是个小型局域网聊天 服务器端 xff1a 1 File Name process server c 2 Author jiujue 3 Created Time 2019年03月10日 星期日 20时29分18秒 4 5 includ
  • cpptools-srv占用内存过大_iOS“其他内存”占用过大问题分析

    今天遇到了一个有趣的关于iPhone 占用内存过大的问题 xff0c app与正常使用内存没问题 xff0c 但莫名多了很多其他内存 手机只有64g但其他占了50g 首先百度一波 xff0c 得到的答案无一是还原出厂设置 xff0c 抹掉所
  • nginx限制客户端请求数+iptables限制TCP连接和频率来防止DDOS

    DDOS的特点是分布式 xff0c 针对带宽和服务 xff0c 即四层流量 和七层应用 对于七层的应用 xff0c 如果前端是Nginx xff0c 主要使用nginx的http limit conn和http limit req模块来防御
  • Android带图片的Toast(自定义Toast)

    使用Android默认的Toast Toast简介 xff1a Toast是一个简单的消息显示框 xff0c 能够短暂的出现在屏幕的某个位置 xff0c 显示提示消息 默认的位置是屏幕的下方正中 xff0c 一般Toast的使用如下 xff
  • XML CDATA是什么?

    解析数据 XML 解析器通常情况下会处理XML文档中的所有文本 当XML元素被解析的时候 xff0c XML元素内部的文本也会被解析 lt message gt This text is also parsed lt message gt
  • TCP端口同时做服务器与客户端

    下面的代码主要实现两个功能 xff1a 1 xff0c 通过bind使本机指定端口如2012端口与远端服务器通信 xff0c 不指定的话会随机分配 2 xff0c 然后使用该指定端口创建监听服务 xff0c 接受其他客户端的连接 主要方法用
  • bat脚本禁用和开启本地连接

    netsh interface set interface name 61 34 本地连接 34 admin 61 disabled 禁用本地连接 netsh interface set interface name 61 34 本地连接

随机推荐

  • 一个PHP的QRcode类,与大家分享

    类的代码 View Code lt php eval gzinflate base64 decode 39 7X1td9s2svDn3nP2PzBZNZJiKRb1ZtmxvY 43 bOE3u2o5rp9u7N5v1oSTaZqO3UHQ
  • Java程序员的黄金5年,从入行到大牛的晋升之路

    在程序界流行着一种默认的说法叫 黄金5年 xff0c 也就是一个程序员从入职的时候算起 xff0c 前五年的选择直接影响着整个职业生涯中的职业发展方向和薪资走向 xff0c 如何走好这5年 xff0c 彻底从一个刚入行的菜鸟蜕变成可以以不变
  • Gin 框架的路由结构浅析

    Gin 是 go 语言的一款轻量级框架 xff0c 风格简单朴素 xff0c 支持中间件 xff0c 动态路由等功能 gin项目github地址 路由是web框架的核心功能 在没有读过 gin 的代码之前 xff0c 在我眼里的路由实现是这
  • 红米手机5 Plus启用root超级权限的步骤

    红米手机5 Plus怎么开启root超级权限 xff1f 做开发的人清楚 xff0c Android机器有root超级权限 xff0c 一旦手机开启root相关权限 xff0c 就可以实现更强的功能 xff0c 举个栗子做开发的人企业的营销
  • 基于vue解决大数据表格卡顿问题

    点我在线体验Demo 请用电脑查看 亲测苹果电脑 xff0c chrome浏览器无卡顿现象 xff0c 其它浏览器并未测试 xff0c 如遇到卡顿请备注系统和浏览器 xff0c 方便我后续优化 xff0c 谢谢 先看一下效果 一共1000
  • raid1损坏一块盘之后的处理方式

    在企业生产环境中 xff0c 假如raid1两块盘中的一块损坏了 xff0c 后续如何处理 xff1f 直接换下损坏的磁盘是否会对服务有影响 xff08 如何把影响降到最低 xff09 xff0c 加入新的磁盘后是否还需要重新做raid1
  • Landsat Tm5辐射定标和大气校正(转)

    一 辐射定标 1 由于ENVI 4 4 中有专门进行辐射定标的模块 xff0c 因此实际的操作十分简单 将原始TM 影像打开以后 xff0c 选择 Basic Tools Preprocessing Calibration Utilitie
  • Traversing the Dept Security tree

    We can use the connect by prior function provided by Oracle to traverse the Dept security Tree Suppose an Organization h
  • Reconfigurable computing[可重构计算]

    在实验室跟老师做一些硬件加速相关的东西 xff0c 看文献时看到Reconfigurable computing xff0c 发现这个很有意思 现在每天都有越来越多的数据产生 xff0c 要处理这些数据如果单纯用CPU计算的话会耗费很多时间
  • 嵌入式作业STM32采用串口DMA方式发送数据

    目录 前言 要求 一 DMA的基本介绍 DMA的基本定义 DMA的主要特征 STM32F411x系列芯片DMA控制器 二 通过CubeMX配置项目 1 创建项目 2 选择芯片STM32F103C8T6 3 设置RCC 4 设置串口 5 设置
  • C ~ char int 等数据转换问题

    1 xff0c char型数字转换为int型 char a 61 34 32 34 printf 34 d n 34 a 0 39 0 39 输出结果为3 2 xff0c int转化为char 1 字符串转换成数字 xff0c 用atoi
  • curl get请求添加header头信息

    function get url ch 61 curl init curl setopt ch CURLOPT HTTPGET true curl setopt ch CURLOPT RETURNTRANSFER 1 TRUE 将curl
  • 关于 RESTFUL API 安全认证方式的一些总结

    常用认证方式 在之前的文章 REST API 安全设计指南 与 使用 AngularJS amp NodeJS 实现基于 token 的认证应用 两篇文章中 xff0c 译 web权限验证方法说明 中也详细介绍 xff0c 一般基于REST
  • C++ REST SDK的基本用法

    微软开发了一个开源跨平台的http库 C 43 43 REST SDK xff08 http casablanca codeplex com xff09 xff0c 又名卡萨布兰卡Casablanca xff0c 有个电影也叫这个名字 xf
  • ubuntu下socket通信

    之前的博文介绍了如何在ubuntu下实现unix domain socket通信 xff0c 但只是本地的通信 xff0c 虽然过程和网络通信很类似 xff0c 但这里还是有必要了解下真正的socket通信 首先贴出server端的c代码
  • c语言中宏定义中void,C语言中宏定义几道问题!

    C语言中宏定义几道问题 xff01 答案 1 信息版本 xff1a 手机版 解决时间 2020 04 27 20 44 已解决 2020 04 27 17 15 一 执行下列程序 define MA x y x y k 61 5 k 61
  • IE浏览器自动配置脚本的使用(代理上网)

    以前在FireFox中设置过代理服务器自动配置脚本 xff0c 对于访问某些无法访问的网站非常有效 xff0c 在IE中应该也是有效的 xff0c 但是我配置了好几次都没有配置成功 xff0c 今天发现原来是格式错误 xff0c 修改了一下
  • c语言中通过指针将数值赋值到制定内存地址

    1 一种直观的方法 假设现在需要往内存0x12ff7c地址上存入一个整型数0x100 我们怎么才能做到呢 xff1f 我们知道可以通过一个指针 向其指向的内存地址写入 数据 xff0c 那么这里的内存地址0x12ff7c其本质不就是一个指针
  • 一个封装HTTP请求的函数(C++)

    这里封装 了HTTP请求的 xff0c 支持GET与POST xff0c 并支持各种参数组合 xff0c 调用方式很简单 使用DEVWEB WebRequest string http www luaie com ret 就可以了 如果使用
  • c++ vector 用法总结

    vector 是向量类型 xff0c 它可以容纳许多类型的数据 xff0c 如若干个整数 xff0c 所以称其为容器 vector 是C 43 43 STL的一个重要成员 xff0c 使用它时需要包含头文件 xff1a include lt