C++ vector 数组/向量

文章目录

  • 【 1. vector 的声明与初始化 】
    • 1.1 vector 的声明
    • 1.2 vector 的初始化
      • 1.2.1 构造一个空的 vector
      • 1.2.2 指定数量初值的方式初始化 vector
      • 1.2.3 迭代器的方式初始化
      • 1.2.4 构造一个相同的 vector
  • 【 2. vector 的相关操作 】
    • 2.1 插入元素
      • 2.1.1 在vector的末尾插入新元素
      • 2.1.2 在迭代器的前面插入新元素
      • 2.1.3 覆盖原有的 vector
    • 2.2 删除元素

  • vector数组是可以 存放任意数据类型 动态数组
    和普通数组类似,可以通过下标对数组中的元素进行引用。
  • 使用vector数组要在 头文件中加 #include <vector>
  • vectors 包含着一系列连续存储的元素,其行为和数组类似。访问 vector 中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在vector中插入元素则是线性时间复杂度。

【 1. vector 的声明与初始化 】

1.1 vector 的声明

  • 声明
vector<int> vec;//声明一个存放int型的向量vec

1.2 vector 的初始化

1.2.1 构造一个空的 vector

  • 基本语法
    构造一个空的vector。
vector<int> myvector();
//或者
vector<int> myvector;
  • 举例1
    构造一个空的 vector myvector。
#include<iostream>
#include<vector>using namespace std;
int main()
{ vector<int> myvector();return 0;
}

在这里插入图片描述

1.2.2 指定数量初值的方式初始化 vector

  • 基本语法
    构造一个初始放入num个值为val的元素的vector。
  vector( size_type num, const TYPE &val );
  • 举例1
    构造一个 5 个 3 的 vector。这里 myvec.size() 返回 myvec 元素数量大小
#include<iostream>
#include<vector>using namespace std;
int main()
{ vector<int> myvec(5, 3);for (int j=0;j<myvec.size();++j)cout << myvec[j]<<endl;return 0;
}

在这里插入图片描述

1.2.3 迭代器的方式初始化

  • 基本语法
    构造一个初始值为 [start,end) 区间元素的vector。
vector( input_iterator start, input_iterator end );
  • 举例1
    将 myvec 初始化为 [地址a,地址a+3)的元素 。
#include<iostream>
#include<vector>using namespace std;
int main()
{ int a[5] = { 1, 2, 3, 4, 5 };vector <int>myvec( a,a+3 );for (int j=0;j<myvec.size();++j)cout << myvec[j]<<endl;return 0;
}

在这里插入图片描述

  • 举例2
    将 myvec 初始化为 [地址&a[1],地址&a[4])的元素 。
#include<iostream>
#include<vector>using namespace std;
int main()
{ int a[5] = { 1, 2, 3, 4, 5 };vector<int> myvec(&a[1], &a[4]);for (int j=0;j<myvec.size();++j)cout << myvec[j]<<endl;return 0;
}

在这里插入图片描述

1.2.4 构造一个相同的 vector

  • 基本语法
    构造一个与 AnthorVector 相同的vector 。
vector( const vector &AnthorVector);
  • 举例1
    构造一个与 myvec 相同的 myvec2 。
#include<iostream>
#include<vector>using namespace std;
int main()
{ int a[5] = { 1, 2, 3, 4, 5 };vector<int> myvec(&a[1], &a[4]);vector <int>myvec2(myvec);for (int j=0;j<myvec.size();++j)cout << myvec2[j]<<endl;return 0;
}

在这里插入图片描述

【 2. vector 的相关操作 】

在这里插入图片描述
下面给出几个常用的操作及案例。

2.1 插入元素

2.1.1 在vector的末尾插入新元素

  • 基本语法
    在 myvec 的末尾添加元素newvalue。
myvec.push_back(newvalue);
  • 举例1
    在 myvec 的末尾添加元素1。
#include<vector>using namespace std;
int main()
{vector<int> myvec(5, 3);myvec.push_back(1);for (int j = 0; j <myvec.size(); ++j)cout << myvec[j] << endl;return 0;
}

在这里插入图片描述

2.1.2 在迭代器的前面插入新元素

  • 基本语法
    在 myvec 的前面添加元素newvalue。
vector<int>::iterator it;
it=vec.begin();
vec.insert(it,newvalue);
  • 举例1
    在 myvec 的前面添加元素1。
#include<iostream>
#include<vector>
using namespace std;
int main()
{vector<int> myvec(5, 3);vector<int>::iterator it;it = myvec.begin();myvec.insert(it, 1);for (int j = 0; j <myvec.size(); ++j)cout << myvec[j] << endl;return 0;
}

在这里插入图片描述

2.1.3 覆盖原有的 vector

  • 基本语法
    在vector中加入NewNum个NewValue元素,同时清除掉以前的元素。
vec.assign(NewNum,NewValue);//现在vec中只有NewNum个NewValue
  • 举例1
    现在vector中只有2个1。
#include<iostream>
#include<vector>
using namespace std;
int main()
{vector<int> myvec(5, 3);myvec.assign(2, 1);//现在vector中只有2个1for (int j = 0; j <myvec.size(); ++j)cout << myvec[j] << endl;return 0;
}

在这里插入图片描述

2.2 删除元素

  • 基本语法
//删除最后一个元素
vec.pop_back();//删除指定位置的元素
vec.erase(vec.begin());//删除第一个位置的元素值//清除所有元素
vec,clear();
  • 举例1
    删除 myvec 的最后一个元素
#include<iostream>
#include<vector>
using namespace std;
int main()
{vector<int> myvec(5, 3);myvec.pop_back();for (int j = 0; j <myvec.size(); ++j)cout << myvec[j] << endl;return 0;
}

在这里插入图片描述

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

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

相关文章

Linux 网络: 网卡速度异常案例(1)

文章目录 1. 前言2. 问题描述3. 问题简析 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. 问题描述 在 TI 的 AM335x 平台适配了一个 1000Mbps 的 PHY 芯片&#xff0c;通过 iperf 打流&#x…

C语言最详细内存函数

1. memcpy 使用和模拟实现 void * memcpy(void *destination,const void * source,size_t num);• 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 • 这个函数在遇到 ‘\0’ 的时候并不会停下来。 • 如果source和destination有任何的重…

IPv4地址

IP v4 由32位二进制构成、可以用点分十进制表示。 例如&#xff1a;192.168.1.1 11000000101010000000000100000001 由网络位和主机位组成。为了区分网络位和主机位&#xff0c;需要用子网掩码&#xff0c;子网掩码也是由32位二进制构成&#xff0c;连续的1对应网络位&#…

HDMI 2.1b 规范解读

HDMI 规范 HDMI 2.1b 是最新版 HDMI 规范&#xff0c;支持一系列更高的视频分辨率和刷新频率&#xff0c;包括 8K60 和 4K120 以及高达 10K 的分辨率。同时支持动态 HDR 格式&#xff0c;带宽能力增加到 48Gbps HDMI。 新的超高速 HDMI 线缆支持 48Gbps 带宽。该线缆可确保提供…

TS学习02 面向对象 类、封装继承、接口、泛型

TS学习02 TypeScript 面向对象1、类&#xff08;class&#xff09;属性实例属性&类属性只读属性 方法实例方法类方法 构造函数 & this 2、面向对象的特点封装属性的权限属性存取器静态属性 继承重写super抽象类 3、接口&#xff08;Interface&#xff09;4、泛型&#…

吴恩达机器学习笔记 三十二 K-means初始化 选择聚类数量

K-means 初始化 首先 K < m&#xff0c;若集群的数量多于样本数显然是不合理的。 第一步&#xff1a;随机选取 K 个样本&#xff1b; 第二步&#xff1a;设这 K 个样本为 μ1 μ2 ... μk 有时候K-meas 算法会出现局部最小值的情况&#xff0c;如左下图和右下图&#xf…

spark sql执行引擎原理及配置

如果我们想要给上层开发人员配置好一个统一的sql开发界面&#xff0c;让他们统一通过sql开发即可&#xff0c;可通过spark中的thriftserver服务实现&#xff0c;与hive中的thriftserver类似&#xff0c;配置好该服务后&#xff0c;上层通过db client或者代码中通过jdbc连接即可…

Android U user+root实现方案

背景 由于项目&#xff08;MTK平台&#xff09;上要实现userroot的版本&#xff0c;供特殊用户使用。Android T上的方案无效&#xff0c;经历了各种搜索查看资料&#xff0c;和bsp大佬一起通宵奋战&#xff0c;整出了方案。梳理记录下&#xff0c;有需要的同学可以参考。 Root…

cesium键盘控制相机位置和姿态

该类主要用于监听键盘事件并在用户按下不同按键时执行相应的相机操作&#xff0c;如改变相机的位置、偏航角、俯仰角和翻滚角&#xff0c;从而实现在三维场景中的漫游。 以下是代码的主要逻辑&#xff1a; 导入Cesium库&#xff0c;并定义一个flags对象&#xff0c;其中包含了…

Linux gcc day2

mkdir -p 递归的创建目录 rm or rmdir&#xff1a; rmdir &#xff1a;是用来删除空目录的 实际上我们更加常用的是rm命令 rm可以删除普通文件,也可以删除目录&#xff0c;目录是从某次开始就是一棵树就是递归&#xff0c;所以就要递归删除 rm -r [文件名] 递归删除目录或者目…

linux系统命令chkconfig详解,管理系统服务的工具-查看、启用、禁用和设置系统服务的启动级别

目录 一、chkconfig命令介绍 二、命令的主要作用 1、管理服务的启动和停止&#xff1a; 2、配置运行级别&#xff1a; 3、简化系统管理&#xff1a; 4、查看服务状态&#xff1a; 三、命令语法 1、基本语法 2、运行级别 四、获取帮助 1、通过help获取 2、通过man获…

Azure入门实践-如何创建两个虚拟网络的对等连接

在Azure中创建两个虚拟网络&#xff08;Virtual Network, VNet&#xff09;之间的对等连接&#xff08;VNet Peering&#xff09;可以让这两个虚拟网络中的资源像在同一个网络中一样相互通信。以下是详细的步骤&#xff1a; 1. 登录到Azure门户 打开浏览器&#xff0c;访问Az…

基于“遥感+”蓝碳储量估算、红树林信息提取实践技术应用与科研论文写作

原文链接&#xff1a;基于“遥感”蓝碳储量估算、红树林信息提取实践技术应用与科研论文写作https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247599633&idx5&sn1398cde523f9c5e036e4d478fc1d3388&chksmfa8207f6cdf58ee0a3a2bf652e7ac5cf65636b05f9e3306…

备战蓝桥杯Day36 - 动态规划 - 三角形最小路径和问题

一、什么是动态规划 通过拆分问题&#xff0c;定义问题状态和状态之间的关系&#xff0c;使得问题能够以递推的方式解决。 哪些问题可以使用动态规划&#xff1f; 1、具有最优子结构&#xff1a;问题的最优解所包含的子结构的解也是最优的 2、具有无后效性&#xff1a;未来…

java项目依赖的依赖加载不到

1、描述&#xff1a; 一个项目包含多个子模块&#xff0c;并且可以根据profiles切换环境。 然后依赖的依赖就是加载不到 上面flow-es-6.8是我封装的一个环境。 2、解决: profiles里要加上默认一个环境配置,如下红色部分&#xff1a; 虽然我在idea右边maven中的profiles选项…

【ElementUI】详细分析DatePicker 日期选择器

目录 前言1. 通用Demo2. 快捷键3. 参数 前言 对于全栈玩家&#xff0c;各个组件都需相应了解才可做好前后端的CRUD 以下为实战结合Element官网的心得体会 如图所示&#xff1a; 1. 通用Demo 如果只想要一个选择日期&#xff0c;而不是范围&#xff0c;Demo如下&#xff1a;…

Docker搭建LNMP环境实战(09):安装mariadb

1、编写mariadb部署配置文件 在文件夹&#xff1a;/mnt/hgfs/dockers/test_site/compose下创建文件&#xff1a;test_site_mariadb.yml&#xff0c;内容如下&#xff1a; version: "3.5" services:test_site_mariadb:container_name: test_site_mariadbimage: mari…

逐步学习Go-Select多路复用

概述 这里又有多路复用&#xff0c;但是Go中的这个多路复用不同于网络中的多路复用。在Go里&#xff0c;select用于同时等待多个通信操作&#xff08;即多个channel的发送或接收操作&#xff09;。Go中的channel可以参考我的文章&#xff1a;逐步学习Go-并发通道chan(channel)…

JS基本类型作用域作用域链

#### 作用域链 作用域链的用途&#xff0c;是保证对执行环境有权访问的所有变量和函数的有序访问。看一个例子 js var a 1 function fn () {var b a 1console.log(b) } fn() ### 从代码执行来看 首先在创建fn函数时&#xff0c;会创建一个预先包含全局变量对象的作用域链&am…

Gparted工具 初始化磁盘

Gparted工具 初始化磁盘 1、安装 没有此工具请先安装&#xff1a; yum install epel-release yum install gparted yum install yum-utils git gnome-common gcc-c yum-builddep gparted 2、打开Gparted工具&#xff0c;初始化磁盘 使用具有root权限的普通用户打开gparted&…