【C++】 vector 数组/向量

news2024/10/9 16:29:59

文章目录

  • 【 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();
  • 举例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个1
	for (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.coloradmin.cn/o/1554563.html

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

相关文章

C#自定义最大化、最小化和关闭按钮

目录 1.资源文件 2.读取资源文件中的图片 3.WindowState属性 4. 示例 用户在制作应用程序时&#xff0c;为了使用户界面更加美观&#xff0c;一般都自己设计窗体的外观&#xff0c;以及窗体的最大化、最小化和关闭按钮。本例通过资源文件来存储窗体的外观&#xff0c;以及最…

GEE22:基于目视解译的土地利用分类(随机森林监督分类)

采样点信息&#xff1a; 设置一下采样点参数&#xff1a; 代码&#xff1a; //设置研究区位置 var table ee.FeatureCollection("users/cduthes1991/boundry/China_province_2019"); var roi table.filter(ee.Filter.eq(provinces,beijing)); Map.centerObjec…

AVL树深度解析

目录 一. AVL树的概念 二. AVL树节点的定义 三. AVL树的基本操作 3.1 插入操作&#xff1a; 3.1.1 parent->_pf 0 3.1.2 abs(parent->_pf) 1 3.1.3 abs(parent->_pf) 2 3.1.3.1 parent->_pf 2 && cur->_pf 1 3.1.…

P3369 【模板】普通平衡树(splay 算法)

题目描述 您需要写一种数据结构&#xff08;可参考题目标题&#xff09;&#xff0c;来维护一些数&#xff0c;其中需要提供以下操作&#xff1a; 插入一个数 x。删除一个数 x&#xff08;若有多个相同的数&#xff0c;应只删除一个&#xff09;。定义排名为比当前数小的数的…

6、父子组件传参、路由的嵌套、命名视图、路由跳转传参

一、父子组件传参 1、父传子 在父组件的子组件中自定义一个属性在子组件中有一个props属性&#xff0c;用来接收父组件传递的数据,传递的数据不能修改,还可以设置默认值 <!-- 父组件 -->data() {return {flag: false,num:10, //传的参数free:}} <!-- :type1"…

【JavaScript算法】DOM树层级显示

题目描述&#xff1a; 上述表达式的输出结果为 [DIV] [P, SPAN, P, SPAN] [SPAN, SPAN]直接上代码 let tree document.querySelector(".a"); function traverseElRoot(elRoot) {const result [];function traverse(element, level) {if (!result[level]) {resul…

【系统架构师】-第15章-面向服务架构设计

面向服务的体系结构 (Service-Oriented Architecture,SOA) 1、应用角度&#xff1a;它着眼于日常的业务应用&#xff0c;并将它们划分为单独的业务功能和流程&#xff0c;即所谓的服务 2、软件基本原理&#xff1a;一个组件模型&#xff0c;它将应用程序的不同功能单元(称为服…

Python数据分析必备工具——Pandas模块及其应用

Python数据分析必备工具——Pandas模块及其应用 外部数据的读取文本文件的读取语法示例 电子表格的读取语法示例 数据库数据的读取与操作语法 数据操作数据概述语法 数据筛选语法 数据清洗数据类型语法示例 沉余数据语法示例 异常值的识别与处理缺失值的识别与处理语法示例 数据…

PHP图床程序优化版:图片外链服务、图床API服务、图片CDN加速与破解防盗链

图片免费上传 支持本地储存、FTP储存、第三方云储存&#xff08;阿里云 OSS、腾讯云 COS、七牛云等&#xff09;。 图片外链加速 一键转换第三方网站的图片外链地址为图床可分享的图片地址&#xff08;支持CDN&#xff09;。 图片解析服务 直接将第三方外链图片地址显示为…

BSV区块链的应用开发前景——通过标准化来促进创新

​​发表时间&#xff1a;2024年3月5日 近年来区块链领域的发展日新月异&#xff0c;各种全新的技术和方法论正在迅猛涌现。在这个瞬息万变的环境之中&#xff0c;标准化不仅仅会为开发者们带来便利&#xff0c;同时也促进了应用之间的互操作性&#xff0c;并且推动着生态系统的…

【机器学习300问】56、什么是自编码器?

一、什么是自编码器&#xff1f; 自编码器&#xff08;Autoencoder&#xff0c;AE&#xff09;本质是一种特殊的神经网络架构。主要用于无监督学习和特征学习任务。它的目标是通过编码然后解码的过程&#xff0c;学会重构其输入数据&#xff0c;试图还原其原始输入的。 当时我学…

【探索Linux】—— 强大的命令行工具 P.31(守护进程)

阅读导航 引言一、守护进程简介1. 概念2. 特点 二、用C创建守护进程⭕代码✅主要步骤 温馨提示 引言 当谈到计算机系统中运行的特殊进程时&#xff0c;守护进程&#xff08;daemon&#xff09;无疑是一个备受关注的话题。作为在后台默默运行并提供各种服务的进程&#xff0c;守…

FreeRTOS从代码层面进行原理分析(4 移植)

FreeRTOS从代码层面进行原理分析(4 移植) 从前 3 篇博客中我们已经搞清楚了最开始对 FreeRTOS 有疑问的前 2 个问题。 1. FreeRTOS 是如何建立任务的呢&#xff1f; 2. FreeRTOS 是调度和切换任务的呢&#xff1f; 3. FreeRTOS 是如何保证实时性呢&#xff1f; 以下就是前三…

LeetCode:300最长递增子序列 C语言

300. 最长递增子序列 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子…

大话设计模式之迪米特法则

迪米特法则&#xff0c;也称为最少知识原则&#xff08;Law of Demeter&#xff09;&#xff0c;是面向对象设计中的一个重要原则&#xff0c;其核心思想是降低耦合度、减少对象之间的依赖关系&#xff0c;从而使系统更加灵活、易于维护和扩展。 根据迪米特法则&#xff0c;一…

Multisim14.0破解安装教程

Multisim14.0中文破解版是一款相当优秀的专业化SPICE仿真标准环境&#xff0c;Multisim14.0中文版功能强悍&#xff0c;为用户提供了所见即所得的设计环境、互动式的仿真界面、动态显示元件、具有3D效果的仿真电路、虚拟仪表、分析功能与图形显示窗口等等。Multisim破解版操作简…

Linux-1.常见指令以及权限理解

目录 本节目标 使用 XShell 远程登录 Linux 关于 Linux 桌面 下载安装 XShell 查看 Linux 主机 ip 使用 XShell 登陆主机 XShell 下的复制粘贴 Linux下基本指令 登录Linux服务器 新建多用户 全屏 1.快速认识5~6个命令 2.详细谈论课件的所有指令 01. ls 指令 02…

Linux 环境安装Nginx—源码和Dokcer两种安装方式

一、源代码编译安装Nginx 1.下载最新nginx源码 以nginx-1.25.3.tar.gz为例&#xff1a; 可以使用命令(联网)&#xff1a;curl -O http://nginx.org/download/nginx-1.25.3.tar.gz或在官网下载.tar.gz 2.解压缩 tar -zxvf nginx-1.25.3.tar.gz cd nginx-1.25.3/ 3.安装依赖…

动态菜单设计

查询当前用户下的菜单权限 思路&#xff1a;根据用户id 左关联表 查询出对应的菜单选项 查询SQL select distinct-- 菜单表 去除重复记录sys_menu.id,sys_menu.parentId, sys_menu.name from -- 权限表sys_menu-- 角色与权限表 菜单表id 角色菜单表的菜单id left j…

数据分析之Power BI

POWER QUERY 获取清洗 POWER PIVOT建模分析 如何加载power pivot 文件-选项-加载项-com加载项-转到 POWER VIEW 可视呈现 如何加载power view 文件-选项-自定义功能区-不在功能区中的命令-新建组-power view-添加-确定 POWER MAP可视地图