C++中vector的用法详解

2023-05-16

文章目录

    • 构造函数
    • 增加函数
    • 删除函数
    • 遍历函数
    • 判断函数
    • 大小函数
    • 交换函数
    • 赋值函数
    • 改变空间

构造函数

	//vector():                                             创建一个空vector
	vector<int> v1 = vector<int>();                         //v1 = []

	//vector(int nSize):                                    创建一个vector,元素个数为nSize
	vector<int> v2 = vector<int>(3);                        //v2 = [0, 0, 0]

	//vector(int nSize,const t& t):                         创建一个vector,元素个数为nSize,且值均为t
	vector<int> v3 = vector<int>(3, 10);                    //v3 = [10, 10, 10]

	//vector(const vector&):                                复制构造函数
	vector<int> v4 = vector<int>(v3);                       //v4 = [10, 10, 10]

	//vector(begin,end):                                    复制[begin,end)区间内另一个数组的元素到vector中
	vector<int> v5 = vector<int>(v4.begin(), v4.end() - 1); //v5 = [10, 10]
	
	vector<vector<int>> v6 = vector<vector<int>>(3, vector<int>(3););    //v6 = [[0, 0, 0][0, 0, 0][0, 0, 0]]

增加函数

	vector<int> v1 = vector<int>(3, 10);           //v1 = [10, 10, 10]
	vector<int> v2 = vector<int>(3);               //v2 = [0, 0, 0]

	//void push_back(const T & x) :                向量尾部增加一个元素X
	v1.push_back(20);                              //v1 = [10, 10, 10, 20]

	//iterator insert(iterator it, const T & x):   向量中迭代器指向元素前增加一个元素x
	v1.insert(v1.begin() + 1, 5);                  //v1 = [10, 5, 10, 10, 20]

	//iterator insert(iterator it, int n, const T & x):向量中迭代器指向元素前增加n个相同的元素x
	v1.insert(v1.end(), 2, 3);                     //v1 = [10, 5, 10, 10, 20, 3, 3]

	//iterator insert(iterator it,const_iterator first,const_iterator last):向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据
	v1.insert(v1.end(), v2.begin(), v2.end());     //v1 = [10, 5, 10, 10, 20, 3, 3, 0, 0, 0]

删除函数

	vector<int> v1 = vector<int>(2, 10);             //v1 = [10, 10]
	v1.push_back(11);                                //v1 = [10, 10, 11]
	v1.push_back(12);                                //v1 = [10, 10, 11, 12]
	v1.push_back(13);                                //v1 = [10, 10, 11, 12, 13]

	//iterator erase(iterator it):                   删除向量中迭代器指向元素
	v1.erase(v1.end() - 1);                          //v1 = [10, 10, 11, 12]

	//iterator erase(iterator first, iterator last): 删除向量中[first, last)中元素
	v1.erase(v1.begin() + 1, v1.end() - 1);          //v1 = [10, 12]

	//void pop_back():                               删除向量中最后一个元素
	v1.pop_back();                                   //v1 = [10]

	//void clear():                                  清空向量中所有元素
	v1.clear();                                      //v1 = []

遍历函数

	vector<int> v1 = vector<int>(1, 10);             //v1 = [10]
	v1.push_back(11);                                //v1 = [10, 11]
	v1.push_back(12);                                //v1 = [10, 11, 12]
	v1.push_back(13);                                //v1 = [10, 11, 12, 13]

	//reference at(int pos):         返回pos位置元素的引用
	int a = v1.at(2);                //a = 12

	//reference front():             返回首元素的引用
	int b = v1.front();              //b = 10

	//reference back():              返回尾元素的引用
	int c = v1.back();               //c = 13

	//iterator begin():              返回向量头指针,指向第一个元素
	int e = *(v1.begin());           //e = 10

	//iterator end():                返回向量尾指针,指向向量最后一个元素的下一个位置
	int f = *(v1.end() - 1);         //f = 13

	//reverse_iterator rbegin():     反向迭代器,指向最后一个元素
	int g = *(v1.rbegin());          //g = 13

	//reverse_iterator rend():       反向迭代器,指向第一个元素之前的位置
	int h = *(v1.rend() - 1);        //h = 10

判断函数

	vector<int> v1 = vector<int>(1, 10);      //v1 = [10]

    //bool empty() const:                     判断向量是否为空,若为空,则向量中无元素
    bool flag = v1.empty();                   //flag = false

大小函数

值得注意的是size和capacity的区别,size是真实元素的所占的空间大小,capacity是整个可容纳的空间大小,如下当对vector删除最后一个元素后,size会减小1,而capacity不会变

	vector<double> v1 = vector<double>(3, 10);   //v1 = [10, 10, 10]
    v1.pop_back();

    //int size() const:                          返回向量中元素的个数
    int size = v1.size();                        //size = 2

    //int capacity() const:                      返回当前向量所能容纳的最大元素值
    int capacity = v1.capacity();                //capacity = 3 (一般不同情况下值不同)

    //int max_size() const:                      返回最大可允许的vector元素数量值
    int max = v1.max_size();                     //max = 1073741823

交换函数

    vector<double> v1 = vector<double>(1, 10);   //v1 = [10]
    vector<double> v2 = vector<double>(1, 55);   //v2 = [55]
    
    //void swap(vector&):                        交换两个同类型向量的数据
    v1.swap(v2);                                 //v1 = [55], v2 = [10]

赋值函数

    vector<int> v1 = vector<int>(3, 10);   //v1 = []
    vector<int> v2 = vector<int>(3, 55);   //v2 = [55, 55, 55]
    
    //void assign(int n,const T& x):       设置向量中前n个元素的值为x
    v1.assign(2, 5);                       //v1 = [5, 5]

    //void assign(const_iterator first,const_iterator last):向量中[first,last)中元素设置成当前向量元素
    v1.assign(v2.begin(), v2.end() - 1);   //v1 = [55, 55]

改变空间

	vector<int> v1 = vector<int>();    //v1 = []
    vector<int> v2 = vector<int>();    //v2 = []

    //改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
    v1.resize(10);                     //v1.size() = 10, v1.capacity() = 10

    //改变当前vecotr所分配空间的大小
    v2.reserve(10);                    //v2.size() = 0, v2.capacity() = 10
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++中vector的用法详解 的相关文章

  • 高阶用户运营体系搭建

    这里写目录标题 第1章 理解用户运营本质1 什么是 用户运营 xff1f 2 一个 用户运营 重点关注什么 xff1f 3 怎么做好用户运营 xff1f 4 高阶用户运营体系搭建5 大规模用户运营体系的3大子系统6 用户留存的归因 活跃差模
  • 商品管理-运营指挥室 看板

    商品管理可视化项目 项目目标 梳理商品管理的整体业务流程 xff0c 调研数据的使用情况 xff0c 建立影响业务的 xff1a 销量 留存 sku数 断码等维度指标 xff0c 建立智能数据监控体系 工作范围 销量看板留存看板在售SKC看
  • Excel 的进阶学习

    文章目录 Excel 的进阶学习1 常用的 Excel 函数及用途1 关联匹配类2 清洗处理类3 逻辑运算类4 计算统计类5 时间序列类 2 基础1 快捷键2 数据组错误信息基本认识计算操作符 3 数据图展示 3 实战分析注意 Excel
  • SQL

    数据库 基本概念 1 xff0e 数据 定义 xff1a 描述事物的符号序列 xff0c 数据 xff08 Data xff09 是数据库中存储的基本对象 数据的种类 xff1a 数字 文字 图形 图像声音及其他特殊符号 数据举例 xff1
  • MatLab-simulink组件(模块)中文名大全

    MATLAB 矩阵实验室 7 0 1 Simulink 仿真 6 1 Aerospace Blockset 太空模块 1 6 1 Bioinformatics Toolbox 生物信息工具箱 1 1 1 CDMA Reference Blo
  • 控制理论总结

    经典控制理论 xff1b 现代控制理论线性控制理论 xff1b 非线性控制理论最优控制 xff1b 预测控制 xff1b 鲁棒控制数字控制系统 xff1b 连续控制系统随动系统 xff1b 自动控制系统的分类 一 按给定信号的形式不同 xf
  • H无穷控制

    H无穷优化控制问题可归纳为 xff1a 求出一个使系统内部稳定的控制器K s xff0c 使闭环传函Tzw的无穷范数极小 LQG的弱点 xff1a 对控制的一个主要挑战使多变量控制系统设计 xff0c 因为MIMO系统的传函是一个矩阵 LQ
  • 增益调度控制

    增益调度方法在良性 Well Behaved 非线性系统中应用的比较普遍 xff0c 所谓良性非线性系统是指系统的行为特性能由一系列选定的局部线性化模型充分描述 增益调度控制方法的一个显著优点就是它能够充分利用现有的成熟的线性控制理论为非线
  • UORB讲解

    Pixhawk 飞控系统是基于ARM的四轴以上飞行器的飞行控制器 xff0c 它的前身是PX4 IMU xff0c Pixhawk 把之前的IMU进行了完整的重构 xff0c 最新版本是2 4 3 而对应的Pixhawk 1 x版本与2 x
  • gorm的Raw与scan

    gorm的Raw与scan Raw 中文 xff1a 原生的 作用 xff1a 在写gorm语句时候用来写Raw sql语句 xff08 原生sql语句 xff09 gorm官方介绍Scan https gorm io zh CN docs
  • MavLink

    2 1 MAVLink xff08 Micro Air Vehicle Link xff09 是一种用于小型无人载具的通信协议 xff0c 于2009年首次发布 该协议广泛应用于地面站 xff08 Ground Control Statio
  • 飞控接收到的每一条MAVLink消息包都会上传到uORB消息池中吗?

    1 飞控接收到的每一条MAVLink消息包都会上传到uORB消息池中吗 xff1f 2 如何自定义 xff08 选择 配置 xff09 发送给QGC的MAVLink消息 xff1f
  • 滤波、传感器融合、IMU合GPS可以测量哪些物理量

    目录 结论IMU加速度计陀螺仪GPS 原理加速度计陀螺仪GPS 传感器融合滤波算法线性互补滤波卡尔曼滤波KF扩展卡尔曼滤波EKF 小结 结论 IMU paxhawk pixhack自带的IMU xff08 惯性测量模块 xff09 包含以下
  • 学习过程中提出的疑问

    目录 如何在simulink中编译两个应用并烧录到飞控中 xff1f 如何自定义地面站QGC接收到的MAVLink消息 xff1f xff08 MAVLink inspector xff09 航点 航路生成器 xff1f 如何在simuli
  • PX4学习笔记

    目录 网址PX4 io网页指导Pixhawk PX4 APM ArduPilot关系硬件照片 示意图逻辑图 集多旋翼控制框架软件框架 辅助工具 软件 使用方法source insight新建工程 导入PX4源码source insight
  • H无穷控制理论与应用案例分析

    0 知识背景 概念 定义 内稳定 xff1a BIBO稳定 xff1a 镇定 xff1a 对于一个控制系统来说 xff0c 如果通过某种反馈可以使系统实现渐近稳定 xff0c 即闭环系统极点具有负实部 xff0c 则称该系统是能镇定的 信号
  • ADRC从入门到放弃0

    ADRC xff1a 自抗扰控制器 其中 xff0c 在对自抗扰理论的 研究中 xff0c 引入了带宽概念这一个崭新的思路 xff0c 极大的简化了自抗扰技术使用时参数整定 的问题 xff0c 同时时域分析的方法可以发现利用带宽的概念还有利
  • 直升机建模

    目录 引子tips模型的组成 引子 duck不必陷入细节 xff0c 比如坐标转换 xff0c 忽而略微小项目 tips x 表示两个向量的叉乘 模型的组成 刚体运动学 xff1a 描述平移运动与转动运动 xff0c 即位移 xff08 线
  • 模糊PID(自适应模糊PID、fuzzy PID)的基本原理及应用举例 by 研三笔记

    目录 1 控制框图2 概述3 基本原理3 1 一些基本的概念 定义3 2 模糊化3 3 模糊推理3 4 清晰化 xff08 解模糊 反模糊化 xff09 3 5 模糊PID3 6 使用 fis文件 4 利用matlab模糊控制工具箱设计模糊
  • 3d目标检测

    目录 知网论文阅读笔记关键词 key words现状 摘要 碎片知识点3D检测算法分类根据其使用的数据类型为三类 xff1a 按照点云不同的特征表达方式分类 1 xff1a 其他分类方法 1 xff1a 根据传感器分类 2 xff1a 根据

随机推荐