【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();
  • 举例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/780677.shtml

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

相关文章

蚂蚁新村3.30答案:“秀女拈针锦线长,纤纤玉指领馨香”说的是哪一项非遗技艺

蚂蚁新村是一个虚拟社区。在这个虚拟社区中&#xff0c;用户可以参与各种活动&#xff0c;比如生产能量豆、做慈善捐赠等。同时&#xff0c;蚂蚁新村也提供了一些知识问答环节&#xff0c;用户在参与的过程中可以增进知识。这些问答内容往往涉及广泛的主题&#xff0c;如文化、…

iOS - Runtime - Class-方法缓存(cache_t)

文章目录 iOS - Runtime - Class-方法缓存(cache_t)1. 散列表的存取值 iOS - Runtime - Class-方法缓存(cache_t) Class内部结构中有个方法缓存&#xff08;cache_t&#xff09;&#xff0c;用散列表&#xff08;哈希表&#xff09;来缓存曾经调用过的方法&#xff0c;可以提高…

Python3:ModuleNotFoundError: No module named ‘elftools‘

问题背景 问题 ModuleNotFoundError: No module named ‘elftools’ 解决方法 pip3 install pyelftools 成功&#xff01;&#xff01;&#xff01;

YPay源支付V7开源版

YPay_V7版本即将停止维护更新&#xff0c;同时我们将开放最新版开源代码供学习和参考。虽然首批阶段的【function_8.1.php文件是加密的】&#xff0c;但授权已经除去&#xff0c;该代码将在新版YPay上线时开放给大家。我们也会定期进行迭代更新&#xff0c;随后将创建对应仓库&…

【QT学习】1.qt初识,创建qt工程,使用按钮,第一个交互按钮

1.初识qt--》qt是个框架&#xff0c;不是语言 1.学习路径 一 QT简介 &#xff0c;QTCreator &#xff0c;QT工程 &#xff0c;QT的第一个程序&#xff0c;类&#xff0c;组件 二 信号与槽 三 对话框 四 QT Desiner 控件 布局 样式 五 事件 六 GUI绘图 七 文件 八 …

解决 linux 服务器 java 命令不生效问题

在Linux系统中&#xff0c;当你安装Java并设置了JAVA_HOME环境变量后&#xff0c;你可能需要使用source /etc/profile命令来使Java命令生效。这是因为/etc/profile是一个系统级的配置文件&#xff0c;它包含了系统的全局环境变量设置。 但是需要注意的是&#xff0c;source /e…

使用C语言实现Linux下的并发Http服务器

使用C语言实现Linux下的并发Http服务器 文章目录 使用C语言实现Linux下的并发Http服务器先备知识Http协议请求格式&#xff1a;客户端请求服务端响应 Demo 实现Mini的Http服务器流程接收Http请求实现按行读取请求头部请求头部的结束 解析请求响应请求读取文件&#xff08;http需…

品质领航,流量赋能,2024喜尔康浙江省经销商培训会在喜尔康总部成功举行

3月29日&#xff0c;以“新零售、新流量、新风口”为主题的2024喜尔康浙江省经销商培训会在喜尔康总部正式开始举办。活动旨在智能新时代赋能经销商伙伴&#xff0c;通过抓住行业智能化风口&#xff0c;实现喜尔康与经销商的共赢&#xff0c;决胜未来新零售商机。 喜尔康始终致…

Charles for Mac 强大的网络调试工具

Charles for Mac是一款功能强大的网络调试工具&#xff0c;可以帮助开发人员和测试人员更轻松地进行网络通信测试和调试。以下是一些Charles for Mac的主要特点&#xff1a; 软件下载&#xff1a;Charles for Mac 4.6.6注册激活版 流量截获&#xff1a;Charles可以截获和分析通…

nuxt学习

一、遇到的问题 1、nuxt初始化失败问题解决方案 使用npm和pnpm初始化都失败 原因&#xff1a;主机连不上DNS服务器 解决方案 Step1: 打开文件夹 Windows:路径&#xff1a;C:\Windows\System32\drivers\etc Mac: 路径&#xff1a;/etc/hosts Step2: 使用记事本方式打开 …

44 el-dialog 的 appendToBody 属性, 导致 vue 响应式失效

前言 我们经常会碰到 一些 模型和视图 不同步的问题 通常意义上 主要的问题为 列表的某响应式数据更新着更新着 后面就变成非响应式对象了, 然后 就造成了 数据一直在更新, 但是 视图的渲染后面就未渲染了, 这是一个由于 模型上的问题 导致的数据的不在响应式更新 又或者 是…

【倪琴神品品鉴】全新倪诗韵神品级古琴

倪琴朱砂神品仲尼&#xff0c;仅此放漏一张&#xff1b;龙池侧签海门倪诗韵制&#xff0c;雁足上方刻“雷音琴坊”方章&#xff0c;凤沼下方有随形章“神品”二字&#xff1b;老木材纹理竖直&#xff0c;共振良好&#xff0c;是难得的佳器&#xff1b;附带倪老师亲笔签名收藏证…

图扑数字孪生智慧城市,综合治理一屏统览

现代城市作为一个复杂系统&#xff0c;牵一发而动全身&#xff0c;城市化进程中产生新的矛盾和社会问题都会影响整个城市系统的正常运转。智慧城市是应对这些问题的策略之一。领导曾在中央城市工作会议上指出&#xff0c;城市工作要树立系统思维&#xff0c;从构成城市诸多要素…

Hyper-V 虚拟机设置静态 IP 和外网访问

文章目录 环境说明1 问题简介2 解决过程 环境说明 宿主机操作系统&#xff1a;Windows 11 专业版漏洞复现操作系&#xff1a;debian-live-12.5.0-amd64-standard 1 问题简介 在 Windows 上用自带的 Hyper-V 虚拟机管理应用创建了一个 Debian 12 虚拟机&#xff0c;配置静态 IP…

windows安装Chocolatey

其实官网就有介绍&#xff0c;贴上原址&#xff1a; Chocolatey Software | Installing Chocolatey 安装步骤&#xff1a; 1、winX选择Windows Powershell(管理员) 2、复制以下指令 Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]:…

接口自动化框架搭建(九):接入钉钉消息通知

1&#xff0c;jenkins安装钉钉插件 2&#xff0c;在钉钉群聊设置机器人 3&#xff0c;jenkins配置钉钉 根据情况选择&#xff1a; 除了这些&#xff0c;其他不用配置&#xff0c;配置完成点击确认 4&#xff0c;项目配置 添加后保存 5&#xff0c;测试下效果 构建完成后&a…

一文教你如何轻松领取腾讯云优惠券

腾讯云作为国内领先的云计算服务商&#xff0c;为用户提供了丰富的云产品和服务。为了让更多用户享受到腾讯云服务的优质体验&#xff0c;腾讯云推出了各种优惠券&#xff0c;让用户在购买云服务时能够获得更多实惠。本文将为大家详细介绍如何轻松领取腾讯云优惠券&#xff0c;…

从供方协议管理到外部供方管理

从GJB 5000A的供方协议管理到GJB 5000B的外部供方管理&#xff0c;军用软件的研制对承接单位有了更高的标准和要求&#xff0c;也对外部供方管理有了更改的要求&#xff0c;让我们看看具体的变化吧&#xff01; 供方协议管理的目的&#xff1a; 管理供方产品的获取工作。 外部…

FL Studio21.2.3中文版音乐制作编曲软件功能展示讲解

FL Studio 21&#xff0c;确实被广大音乐制作人亲切地称为“水果”。这款软件以其强大的功能和用户友好的界面在音乐制作领域占据了重要地位。 FL Studio 21&#xff08;水果&#xff09;是一款全能的音乐创作软件&#xff0c;也是一款强大的编曲软件&#xff0c;可以作为编曲…

【Linux】体验一款开源的Linux服务器运维管理工具

今天为大家介绍一款开源的 Linux 服务器运维管理工具 - 1panel。 一、安装 根据官方那个提供的在线文档&#xff0c;这款工具的安装需要执行在线安装&#xff0c; # Redhat / CentOScurl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start…