C++ Vector常用函数

2023-05-16

C++ Vector常用函数

begin()函数

原型: iterator begin();
            const_iterator begin();
功能:返回一个当前vector容器中起始元素的迭代器。

end()函数

原型:iterator end();
           const_iterator end();
功能:返回一个当前vector容器中末尾元素的迭代器。

front()函数

原型:reference front();
           const_reference front();
功能:返回当前vector容器中起始元素的引用。

back()函数

原型:reference back();
           const_reference back();
功能:返回当前vector容器中末尾元素的引用。

说明: 可用 * vector.begin() 或 * vector.end() 得到 vector 首尾的值。
            也可用 vector.front() 、vector.back() 来得到 vector 首尾的值。


insert() 函数
insert() 函数有以下三种用法:

iterator insert( iterator loc, const TYPE &val );
在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器。

void insert( iterator loc, size_type num, const TYPE &val );
在指定位置loc前插入num个值为val的元素。

void insert( iterator loc, input_iterator start, input_iterator end );
在指定位置loc前插入区间[start, end)的所有元素。

//创建一个vector,置入字母表的前十个字符 
vector <char> alphaVector;
for (int i = 0; i < 10; i++)
	alphaVector.push_back(i + 65);

//在vector开头插入C
vector <char>::iterator theIterator = alphaVector.begin();
alphaVector.insert(theIterator,'C');

//显示vector的内容 
for (theIterator = alphaVector.begin(); theIterator != alphaVector.end(); theIterator++)
	cout << *theIterator;
//这段代码将显示:CABCDEFGHIJ

push_back()函数
       vector是用数组实现的,每次执行push_back操作,相当于底层的数组实现要重新分配大小(即先free掉原来的存储,后重新malloc)。

pop_back()函数
       删除 vector 中最后一个元素(会改变 vector.size() 的大小)。

	vector <int> v1;
	vector <int>::iterator Iter;
	v1.push_back(10);
	v1.push_back(20);
	v1.push_back(30);
	v1.push_back(40);
	v1.push_back(50);
	cout << "v1 =";
	for (Iter = v1.begin(); Iter != v1.end(); Iter++)
		cout << " " << *Iter;
	cout << endl;
	v1.pop_back();
	cout << "v1 =";
	for (Iter = v1.begin(); Iter != v1.end(); Iter++)
		cout << " " << *Iter;
	cout << endl;

	/*运行结果:
		v1 = 10 20 30 40 50
		v1 = 10 20 30 40
	*/

erase()函数
       从指定容器删除指定位置的元素或某段范围内的元素。

重载1:iterator erase( iterator _Where);
返回值是一个迭代器,指向删除元素下一个元素;

重载2:iterator erase( iterator _First, iterator _Last);
返回值也表示一个迭代器,指向最后一个删除元素的下一个元素;

//实例
	vector <int> v1;
	vector <int>::iterator Iter;
	v1.push_back(10);
	v1.push_back(20);
	v1.push_back(30);
	v1.push_back(40);
	v1.push_back(50);
	cout << "v1 =";
	for (Iter = v1.begin(); Iter != v1.end(); Iter++)
		cout << " " << *Iter;
	cout << endl;
	v1.erase(v1.begin());
	cout << "v1 =";
	for (Iter = v1.begin(); Iter != v1.end(); Iter++)
		cout << " " << *Iter;
	cout << endl;
	v1.erase(v1.begin() + 1, v1.begin() + 3);
	cout << "v1 =";
	for (Iter = v1.begin(); Iter != v1.end(); Iter++)
		cout << " " << *Iter;
	cout << endl;*/
/*运行结果:
	v1 = 10 20 30 40 50
	v1 = 20 30 40 50
	v1 = 20 50
*/

参考文章:C++ vector 的 begin()、end()、front()、back() 区别
                  [c++] vector中insert()的用法详解
                  vector::erase()方法的详细介绍及问题解答

resize()函数和reserve()函数
        size(大小),vector中当前实际存储的元素个数。
        capacity(容量),当前vector最多能使用的存储空间,大于等于size。
        可用vector的size() 和 capacity() 方法获得该vector当前的size和capacity值。
        vector的resize()和reserve()方法分别对size和capacity进行操作。
说明:

  1. reserve方法被用来重新分配vector的容量大小;
  2. 只有当所申请的容量大小n大于vector的当前容量时,才会重新为vector分配存储空间;
  3. reserve方法对于vector的大小(即size)没有任何影响;

实现:

#include <vector>
#include <iostream>
using namespace std;

int main(int argc, char** argv) {
	vector<int> v(4,8);
	v.reserve(10);   
	cout << v.size() << endl;      // v的实际大小 4
	cout << v.capacity() << endl;  // v的容量大小 10
}	

参考文章:vector的resize函数和reserve函数

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

C++ Vector常用函数 的相关文章

  • 数据结构——链表

    链表是一种随机存储在内存中的节点的对象集 节点包括两个字段 xff0c 即存储在该地址的数据和包含下一节点地址的指针 链表的最后一个节点包含指向null的指针 1 链表的用途 链表不需要连续存在于存储器中 节点可以是存储器中任何位置并链接在
  • 多线程学习笔记--第一章 多线程技能(1)

    1 什么是进程 xff1f 进程是操作系统结构的基础 xff0c 是一次程序的执行 xff1b 是一个程序及其数据在处理机上顺序执行时所发生的活动 xff1b 是程序在一个数据集合上运行的过程 xff0c 它是系统进行资源分配和调度的一个独
  • 多线程学习笔记--第一章 多线程技能(2)

    1 currentThread方法 该方法返回代码段正在被哪个线程调用的信息 2 isAlive方法 判断当前线程是否处于活动状态 活动状态是线程已经启动且尚未终止 线程处于运行或准备开始运行的状态 如果将线程对象以构造参数的方式传递给Th
  • Qt编程过程中若给定一些数,把它们四舍五入后,保留两位小数

    double类型的数进行四舍五入后保留两位小数 场景实现方式方法一 方法二总结 场景 开发的过程中需要显示一些double类型的数 xff0c 但是又不能直接显示 xff0c 需要四舍五入之后保留两位小数 如 xff1a 0 124567
  • C语言中,头文件、源文件和库文件的关系(转)

    初学c xff0c 一直搞不懂几个概念 xff0c 偶然看到一篇比较好的文章 xff0c 转载一下 xff0c 原文https blog csdn net xhbxhbsq article details 78955216 一下是原文内容
  • 串口是怎样传输数据的

    概述 通过逻辑分析仪捕捉串口传输的数据来了解串口传输数据的实质 串行接口简称为串口 xff0c 串行接口 xff08 Serial Interface xff09 是指数据一位一位地顺序传送 实现双向通信就需要一对传输线 xff0c 即TX
  • 精准时空:让人工智能更智能

    如今科技界 产业界最热门的关键词是什么 xff1f 各地方政府给出了明确的答案 人工智能 8月的最后一周 xff0c 重庆 上海两大直辖市 xff0c 争先恐后地举办了以智能为主题的大会 精准时空能力 xff0c 作为机器智能的基础数据 x
  • 关于FindCM厘米级定位,这6个问题的答案你需要知道

    面对越来越复杂的应用场景 xff0c 单一的FindCM xff08 千寻知寸 xff09 产品 xff0c 已经无法满足不同行业客户的差异化需求 近日 xff0c 千寻位置完成FindCM产品分级 xff0c 推出了面向不同行业和应用场景
  • 千寻位置如何满足自动驾驶“刚需”

    自动驾驶 xff0c 本质是汽车产业的升级 自动驾驶技术在5G 人工智能和汽车行业的飞速发展下 xff0c 成为业界焦点 目前 xff0c 通用 一汽 广汽 北汽 吉利 长安等国内外主流车企都在进行自动驾驶技术研发 xff0c 而他们正在使
  • 自动驾驶汽车为什么需要高精度定位?干货都在这里

    2019年5月7日 xff0c 曾作为主PM驱动凯迪拉克 Jeep全系 福特全系车型Sync3导航产品研发 xff0c 现任千寻位置车端高精度定位解决方案经理的宋子未 xff0c 讲授了主题为 自动驾驶汽车为什么需要高精度定位 xff1f
  • GNSS增强定位技术发展与星地融合应用

    引言 xff1a 你能想象吗 xff1f 除了手机和汽车 xff0c 现在连安全帽 道路锥筒 xff0c 甚至跑鞋都需要定位 随着移动物联网的快速发展 xff0c 国民经济各个领域都对更高精度的定位能力产生迫切需求 同时 xff0c 市场也
  • 基于Android系统的高精度定位SDK方案

    最新数据显示 xff0c 全球平均每3人就拥有一台Android xff08 安卓 xff09 系统设备 xff0c 其总数已经超过25亿台 丰富多样的Android设备在改变人们的生活同时 xff0c 也被赋予更多期望 xff0c 是否能
  • Ubuntu 修改 apt 源为阿里云源

    文章目录 软件源 Software Source使用说明图形界面 xff08 新手推荐 xff09 手动修改配置文件 相关链接 软件源 Software Source 软件源是指用于存储各种 Linux 应用程序的存储库 xff0c 包括自
  • (已解决)rplidar_ros 报错:Operation Time Out

    按照wiki装rplidar ros的时候 xff1a https github com robopeak rplidar ros wiki 运行 xff1a roslaunch rplidar ros view rplidar launc
  • CNN学习(四)----SiameseFC代码运行Matlab2018a+vs2015+cuda9.0

    由于siameseFC运行需要调用GPU xff0c 即需要安装CUDA和visual studio xff0c CUDA安装可以参考的我的上一篇博客 若是要运行tensorflow版本 xff0c 可以参考这篇博客 一 失败经验 先介绍一
  • 目标跟踪之ECO代码运行及原理简介

    论文地址 xff1a https arxiv org pdf 1611 09224 pdf 代码地址 xff1a https github com martin danelljan ECO ECO xff08 Efficient Convo
  • UAV123数据集下载、简介及配置

    UAV123主要由91个无人机视频组成 xff0c 其中有数个视频序列较长 xff0c 拆分成三四个较短的片段 xff0c 使用多次 xff0c 所以有123个groundtruth xff0c 其中包含20个长视频即UAV20L xff0
  • UAVDT:The Unmanned Aerial Vehicle Benchmark: Object Detection and Tracking数据集下载

    无人机数据集对于目标跟踪而言是一大挑战 xff0c 近年来 xff0c 正对无人机的数据集也越来越多 xff0c UAVDT是ICCV2018提出的一个数据集 xff0c 共包含80000帧图片 xff0c 不仅可以用于目标跟踪 xff0c
  • Linux编译opencv4.4.0报错“/usr/bin/ld: cannot find -lopencv_shape”

    opencv4 4 0下载地址 xff1a https sourceforge net projects opencvlibrary files 问题描述 安装完opencv4 4 0后编译C 43 43 代码显示找不到lib库文件 usr
  • 利用红外图像数据集FLIR Thermal Starter训练yolov5目标检测算法

    Yolov5代码 xff1a https github com ultralytics yolov5 数据集 xff1a https www flir com oem adas adas dataset form 运行环境 xff1a Ub

随机推荐

  • 目标跟踪之ICCV2021 Learning Spatio-Temporal Transformer for Visual Tracking代码复现

    代码地址 xff1a https github com researchmm Stark 论文地址 xff1a https arxiv org abs 2103 17154 一 配置环境 conda create n stark span
  • 目标跟踪之LTMU:High-Performance Long-Term Tracking with Meta-Updater环境配置及代码运行

    代码地址 xff1a https github com Daikenan LTMU 论文地址 xff1a High Performance Long Term Tracking with Meta Updater LTMU是CVPR2020
  • 英伟达NVIDIA Jetson系列产品刷机(SDK Manager)

    英伟达的TX NX AGX可以说是近几年边缘计算中非常牛的产品了 可Linux系统经常会出现安装某软件后系统环境崩掉的情况 xff0c 接着系统崩掉的机会 xff0c 记录一下Jetson AGX Xavier的刷机过程 准备 xff1a
  • seL4的编译和运行(OdroidXU3)

    seL4支持平台 seL4所在的git如下 xff1a https github com seL4 seL4 git 不过我们编译和运行seL4一般不只是用这个git xff0c 而是借助seL4test xff08 seL4的测试框架 x
  • 目标跟踪之Pysot系列代码训练(SiamRPN\SiamRPN++)

    代码地址 xff1a https github com STVIR pysot 环境配置参考博客 xff1a Siam系列跟踪算法工具包PySOT配置 一 数据集准备 Pysot系列跟踪器训练的时候 xff0c 首先将数据集进行裁剪 xff
  • 基于Paddle实现实例分割

    百度的Paddle这几年发展十分迅速 xff0c 而且文档十分齐全 xff0c 涉及到机器视觉的多个应用领域 xff0c 感觉还是非常牛的 xff0c 各种backbone xff0c 损失函数 数据增强手段以及NMS等 xff0c 整体感
  • 机器学习笔记: 时间序列 分解 STL

    1 前言 STL Seasonal and Trend decomposition using Loess 是以LOSS 作为平滑方式的时间序列分解 LOSS可以参考机器学习笔记 xff1a 局部加权回归 LOESS UQI LIUWJ的博
  • C++11 auto遍历

    C 43 43 11这次的更新带来了令很多C 43 43 程序员期待已久的for range循环 xff0c 每次看到javascript xff0c lua里的for range xff0c 心想要是C 43 43 能有多好 xff0c
  • C++ 文件的读写(fin && fout)

    如何让键盘输入字符保存在 txt文件中 如何让我们自己在键盘上输入的字符不仅仅在屏幕上显示 xff0c 而且还能保存在特定路径的文件中 xff0c 这让简单枯燥的控制台命令程序变得略有趣 首先 xff0c 先看看cin和cout对象 xff
  • 基本矩阵、本质矩阵和单应矩阵

    两幅视图存在两个关系 xff1a 第一种 xff0c 通过对极几何一幅图像上的点可以确定另外一幅图像上的一条直线 xff1b 另外一种 xff0c 通过上一种映射 xff0c 一幅图像上的点可以确定另外一幅图像上的一个点 xff0c 这个点
  • 矩阵零空间

    矩阵A的零空间就Ax 61 0的解的集合 零空间的求法 xff1a 对矩阵A进行消元求得主变量和自由变量 xff1b 给自由变量赋值得到特解 xff1b 对特解进行线性组合得到零空间 假设矩阵如下 xff1a 对矩阵A进行高斯消元得到上三角
  • VIO学习总结

    VIO xff08 visual inertial odometry xff09 即视觉惯性里程计 xff0c 有时也叫视觉惯性系统 xff08 VINS xff0c visual inertial system xff09 xff0c 是
  • 单应性(Homography)变换

    我们已经得到了像素坐标系和世界坐标系下的坐标映射关系 xff1a 其中 xff0c u v表示像素坐标系中的坐标 xff0c s表示尺度因子 xff0c fx fy u0 v0 xff08 由于制造误差产生的两个坐标轴偏斜参数 xff0c
  • senmantic slam mapping

    basicStructure hpp common h 定义一些常用的结构体 以及各种可能用到的头文件 xff0c 放在一起方便include 相机内参模型 增加了畸变参数 xff0c common headers h各种可能用到的头文件
  • Ubuntu 20.04 VNC 安装与设置

    原链接 VNC是一个远程桌面协议 按照本文的说明进行操作可以实现用VNC对Ubuntu 20 04进行远程控制 一般的VNC安装方式在主机没有插显示器的时候是无法使用的 下面的操作可以在主机有显示器和没有显示器时都能够正常工作 首先安装x1
  • opencv中类型转换问题

    记录一下最近困惑我的问题 方便以后查阅 在学习立体匹配算法中BM算法时 xff0c 出现在了关于类型转换的问题 xff1a disp convertTo disp8u CV 8U 255 numberOfDisparities 16 不知道
  • 最大似然估计MLE与贝叶斯估计

    最大似然估计 Maximum Likehood Estimation MLE 最大似然估计的核心思想是 xff1a 找到参数 的一个估计值 xff0c 使得当前样本出现的可能性最大 用当年博主老板的一句话来说就是 xff1a 谁大像谁 xf
  • 大疆Livox_mid 40雷达初体验

    为了解决无人车上镭神雷达FOV小而导致的车前3m内无法看到锥形桶问题 东家给公司邮寄了一台大疆的mid40雷达 不得不说 颜值真的高 光看颜值 就甩镭神几条街 昨天重新配置镭神的激光雷达 官方给的配置软件 真的是 用的我心碎啊 算了 不提了
  • 地铁供电系统的构成

    地铁供电系统一般划分为以下几部分 xff1a 外部电源 xff1b 主变电所 xff1b 牵引供电系统 xff1b 动力照明系统和杂散电流腐蚀防护系统 xff1b 电力监控系统 外部电源地铁供电系统的外部电源就是地铁供电系统主变电所供电的外
  • C++ Vector常用函数

    C 43 43 Vector常用函数 begin 函数 原型 xff1a iterator begin const iterator begin 功能 xff1a 返回一个当前vector容器中起始元素的迭代器 end 函数 原型 xff1