vector动态数组

STL详解(一) 动态数组vector 一、Vectors介绍 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 1.文件包含:首先在程序开头处加上#include<vector>以包含所需要的类文件vector, 还有一定要加上using namespace std;... 阅读详情

1. Vector的简介

vector虽然名为'向量',但是其本质是一个不定长数组,不仅如此,一些对数组进行常用操作也是被STL一起封装在了vector类型的内部,可以直接调用相应函数。

优点:节省内存空间

缺点:太麻烦了

在存放类型相同的大数据时,我们目前做法是定义数组。例如:int a[n]。这种定义方法要求是先确定数组的长度, 即N必须是常量。在解题和实际应用中,我们很难提前确定有多少组数据,因此一般会将数组长度设定为可能的最大值,这就容易造成极大的空间浪费。相同的操作,如果用stl中的Victor就能轻便的多:先定义vector<int> a。然后就可以直接在现有的数据的末尾添加新数据,并随时获取数组当前的长度。

2. Vector的用法

先导用Vector的头文件——就是Vector。

#include <vector>

随后我们可以用vector定义数组a,这里就有很多方式:

vector<int> a;    // a是一个空的1维整型
vector<int> b = {1,2,3,4,5};  // B相当于有五个元素都赋值了初始的一维整型数组。这一语句在老版本C中会报错,因此不推荐使用。
vector<int> c(5);  // C相当于有五个元素,且默认初始化为零的一维整型数组。
vector<int> d(5,-1);  // d相当于有五个元素,且默认初始化为-1的一维整型数组。
vector<vector<int> > e; //e相当于空的二维整型数组。注意两个">"之间有一位空格,不加空格的话可能会被一些编译器识别为输入时。用到的">>".

接下来如何往vector里面添加数据元素呢?最常用的是push_back函数。元素会被自动添加到数组尾部,比如下面的循环动态数组a将被扩展为十位,第i位存放的数字是i+1。

for (int i = 1; i <= 10; i++){
    a.push_back(i);
}

访问vector中的数据时,可以像传统数组一样用a[i]表示第i位的值。比如通过下面的循环,我们就将动态数组a中的全部元素都输出了一遍。并且以空格分隔。

for (int i =0; i < a.size(); i++){
    cout << a[i] << " ";
}

size是求a的长度

vector<int> aa;
aa[0] = 1;    //注意,这是错误的。aa在定义之后是空的,并不存在第零位,因此数据1不会被存入aa中。

与push_back对应,还有用于删除vector末尾元素的函数pop_back这说明。 Vector在对数组末尾进行增减元素的操作时尤为高效。比如删除动态数组a的最后一位元素只需要写:

a.pop_back();

如果我们想删除动态数组中的任意一个位置,我们可以这样写:

a[0]:

a.erase(a.begin());

a[5]:

a.erase(a.begin()+4);

 最厉害的是。 Erase可以删除一系列连续的数据:

删除0~5位

a.erase(a.begin(),a.begin()+4);
c++中的vector动态数组 vector可以简单理解为STL(标准模版库)提供的功能强大的动态数组,vector不只是用来储存整型、浮点型等数字,还可以储存字符、字符串、结构体甚至是类等等。vector可以存储一系列类型相同的元素,因此,称vector为动态系列容器更加合适。提示:以下是本篇文章正文内容,下面案例可供参考以上就是vector容器的介绍以及一些简单的使用方法了,如要更深入了解vector类,可以参考《C_Primer_Plus_第六版》 阅读详情

相关推荐

【C++】动态数组vector的使用

本文介绍了C++标准库中vector容器的核心方法及其应用。主要内容包括:基础属性查询方法(size/empty/capacity)、元素访问方式(operator[]/at/front/back)、增删改操作(push_back/emplace_back/insert/erase)、内存管理(reserve/shrink_to_fit/resize)以及迭代器使用。文章提供了int类型和自定义struct的vector使用示例,展示了三种遍历方式,并演示了查找、添加和删除元素的操作。通过代码示例和运行结果

Dust的博客 908

C++ STL之 vector(动态数组)详解

vector为可变长数组(动态数组),定义的vector数组可以随时添加数值和删除元素。在局部函数中开vector数组,是在堆空间里面开的,与开全局变量比较类似,所以经常见到在局部函数中开大容量数组。1.头文件2.初始化一维初始化//定义了一个名为num的存int数据的一维数组//定义了一个名为num的存double数据的一维数组//node是结构体类型1.指定长度和初始值的初始化//定义一个长度为n的数组,动态定义,不指定初值默认初值为0//所有的元素均为0。

zdlzf的博客 7016

【C语言】动态数组vector实现

C语言中缺少类似C++ Vector或者Java ArrayList 的通用动态数组的库函数。但有些场景数组的容量没法确定,故自己造个简单的动态数组轮子,以便后续能使用得到。 #include <stdlib.h> #include <stdio.h> #include <string.h> #include <stdbool.h> /* 数组...

小灰灰土拨鼠的博客 807

约瑟夫问题、圆桌问题

为了方便,我们设一开始的 n n n 个人的编号为 0 0 0 ~ n − 1 n-1 n−1。 那么把第 k k k 个人干死之后(注意,第 k k k 个人的编号应该是 k − 1 k-1 k−1),队伍变成了: k , k + 1 , k + 2 , ⋯ &ThinSpace; , n − 2 , n − 1 , 0 , 1 , ⋯ k,k+1,k+2,\cdots,n-2,n-1,0,1,\cdots k,k+1,k+2,⋯,n−2,n−1,0,1,⋯ 然后会从第 k k

weixin_46064382的博客 406

使用DCA1000和EVM板进行数据采集

目录 1. 准备工作 1.1 硬件 1.2 软件 2. 驱动安装 3. 设置静态IP地址 4. 采集数据 5. 采集的数据文件的格式 6. 数据采集存储的数据流 参考资料 1. 准备工作 1.1 硬件 EVM板,电源线(5V,>2.5A),USB线 DCA1000,电源线(5V,>2A),USB线,网线,60pin Samtec cable 1.2 软件 mmWave Studio Matlab Runtime Engine v8.5.1 将DCA1000和EVM板

qq_42235129的博客 1万+

提示deepseek生成完整的json用于对接外部API

通过精准的提示词设计(字段过滤、格式约束)、动态验证机制(自检与修正)和官方模板参考,可有效确保DeepSeek生成的JSON纯净无冗余。

神棍之路 2309

Vector动态数组详细介绍

定义vector需要包含头文件<vector>。可以使用以下语法定义一个vector:其中,type表示vector中元素的类型,vec表示vector的名称。例如,定义一个包含整数的vector可以使用以下代码:​定义vector后,可以使用以下语法初始化vector:使用花括号{}初始化vector,如下所示:使用括号()初始化vector,如下所示:这将创建一个包含3个元素的vector,每个元素的初始值为0。

m0_73421035的博客 821

医学影像分割入门:为什么U-Net至今仍是肝脏CT肿瘤分割的‘首选’?

本文探讨了U-Net在肝脏CT肿瘤分割中的持久优势,分析了其轻量化设计、对称架构和跳跃连接如何完美适配医学影像的小样本、高精度需求。通过对比实验和实战建议,揭示了U-Net在肝脏肿瘤分割任务中超越新模型的根本原因,并提供了PyTorch实现和部署技巧。

weixin_38166931的博客 518

C++动态数组<vector>用法介绍

vector数组优点: 和普通数组相比,不需要定义数组长度,而且长度可更改,节约空间,可以存放任意对象,可以拷贝赋值,可以在长度以外增加长度。 头文件:#include< vector > 构造声明:vector<类型>数组名 例如:vector< int >a 定义了一个储存整数的动态数组a 具体操作: 1.插入元素: 数组名.push_back(元素)...

Anterior_condyle的博客 3195

【学习笔记】《基于φ-OTDR的分布式扰动传感系统定位算法研究-北交-通信与信息系统-吴》重点笔记

一、绪论 1.1 引言 光纤传感器的优点:跟电子传感器相比较,光纤传感器有诸多独特的优势:对电磁干扰免疫;具有很好的绝缘性和耐腐蚀性;灵敏度高,可测量微弱信息;可实现大范围监测和分布式传感,仅需一根传感光纤,更为经济便捷;传感光纤体积小、重量轻、可形变,适用于一些特殊应用场所;还有无需供电、耐高温、便于组网等等优点 光纤传感器的感知信号的方法:当探测光入射到光纤中时会发生散射并产生各种散射光...

qq_36045093的博客 2万+

【Godot】【工程】中文字体与多语言(缺字/体积/打包:一次性配置到位)

本文介绍了Godot游戏开发中的中文字体配置与多语言支持方案。主要内容包括:1)中文字体的全局与局部设置;2)使用子集化技术减小字体体积;3)多语言资源管理及翻译系统实现;4)语言切换机制与控件刷新方法;5)字体回退策略优化显示效果;6)打包优化建议。文章提供了从字体导入到多语言实现的完整解决方案,帮助开发者系统性解决中文显示和多语言支持问题,同时优化资源体积和性能表现。配套案例可供学习参考。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 599

动态数组-vector

vector std::vector是 STL 提供的内存连续的、可变长度的数组(亦称列表)数据结构。能够提供线性复杂度的插入和删除,以及常数复杂度的随机访问。 和普通数组对比 问题 普通数组 vector数组 定义数组 int a[N];int a[N] = {0}; // 全初始为 0 vector<int> a;vector<int> a(N); <br>vector<int> a(N, 1);// 全赋值为...

WANGHAOXIN364的博客 395

编程实践:寒武纪-LLM&VLM模型量化&部署

本文介绍了在MLU370-S4平台上对大模型(LLM/VLM)进行量化的两种方法:SmoothQuant和WeightOnly。以Qwen2-VL-2B模型为例,详细说明了两种量化方式的命令行参数配置,包括必须设置的per_channel选项和量化参数调整建议。量化完成后,提供了模型部署的具体命令示例,包含设备分配、端口设置、并行度等关键参数。文章强调在MLU370芯片上需要手动设置block_size,并指出两种量化方式只能二选一使用。配套资料已上传至百度网盘供参考。

微风❤水墨 511

C++动态数组vector实现

最近

yangbupang的博客 2733

【Dumper-7】入门指南 - 带你领略不一样的UE世界

摘要: Dumper-7是一款用于分析UE4/UE5游戏的逆向工具,可自动生成游戏内部结构的C++ SDK。支持Visual Studio、CMake和Xmake三种构建方式,通过DLL注入目标游戏后,自动识别引擎结构并输出C++ SDK文件(默认保存在C:\Dumper-7目录)。该工具适用于游戏Mod开发、安全研究和机制分析,提供完整的类层次映射、属性/函数识别功能。使用时需注意x64平台配置,生成SDK后可集成到自定义DLL项目中,通过示例代码展示如何查找游戏对象、访问世界状态和调用引擎函数。

kinghzking的专栏 439

012、乘累加单元(MAC):NPU中最基本的计算单元

本文深入剖析了神经网络处理器(NPU)中的核心计算单元——乘累加单元(MAC)。作者通过实际调试案例揭示了MAC单元设计中的关键问题:定点数格式对齐、累加器位宽陷阱、流水线优化和多MAC同步方案。重点讨论了INT8量化中的边界条件处理、偏置项截断风险以及零值检测等实战经验,并提供了三点实用建议:建立精确的C模型、参考RISC-V P扩展指令集、仔细审查芯片规格书。文章强调硬件加速的实际瓶颈往往在于数据搬运而非计算单元本身,为NPU开发者提供了宝贵的工程实践参考。

m0_50546716的博客 299

Vector动态数组的创建以及初始化

Vector动态数组的创建以及初始化 Vector动态数组的特点 ① vector动态数组本质上也是数组,它是根据自己不断变化的元素个数,不断寻找适合自己的连续的存储空间,切记:vector动态数组的存储空间与静态数组相同是在内存中连续分布的; ② vector动态数组可以从数组尾部不断插入新的元素,只能从尾部插入; ③ vector动态数组不止长度在变化,它在内存中的位置也在发生变化,由于需要寻找适合存储自己的连续的内存区域,因此vector数组操作大量元素时效率有点低下; ④ vector动态

超级霸霸强的博客 1415

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C++之动态数组vector

可以通过多种方式定义和初始化。// 定义一个空的 vector// 使用初始化列表初始化// 使用默认值初始化// 10个元素,初始值为0// 复制构造// 从另一个 vector 的一部分构造是 C++ STL 中非常重要的容器之一,它结合了动态数组的灵活性和数组的高效性。通过动态扩展、随机访问和灵活的内存管理,可以满足多种编程需求。在实际开发中,合理使用可以提高代码的可读性和性能。

zzh_Zao的博客 2942

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Vector动态数组复习

目录 Vector动态数组复习 Vector的特点 Vector数组与new动态申请内存的不同之处 Vector的size与capacity的区别 概念区分 Capacity概念的适用范围 代码示例 Capacity与size通常搭配使用提高代码运行效率 Vector数组初始化 初始化的方式 代码示例 指定位置插入/删除元素 操作方式 代码示例 分清begin()与end()迭代器返回值指向何处 正反向遍历动态数组 代码示例 Cbegin()&cend()与beg

超级霸霸强的博客 275

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

动态数组和vector

template<class T,//C++17 起其中,参数T为容器要存储的元素类型,对于T需要满足:可复制赋值和可复制构造(C++11前)。要求元素类型是完整类型并满足可擦除,即元素类型的对象能以给定的分配器(Allocator)销毁(C++11 起,C++17 前)。要求元素类型是完整类型并满足可擦除,但许多成员函数附带了更严格的要求。(C++17 起)。Allocator为用于获取/释放内存及构造/析构内存中元素的分配器。优势支持随机访问,访问无开销,时间恒定。线性遍历/搜索。

WSH2012ffff的博客 1023

使用C++ vector类创建动态数组

在实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据,而无法预先确定。 因此需要使用动态数组以解决上述问题。C语言提供了一些内存管理函数,这些内存管理函数结合指针 可以按需要动态地分配内存空间,来构建动态数组,也可把不再使用的空间回收待用,为有效地利用 内存资源提供了手段。C++提供了使用更方便的vector类,使得对数组的操作更加的便捷。 #include #i

缘分.天空 4348

动态数组类:vector

在程序设计过程中,如果我们知道数组的长度,可以定义静态数组。实际上,我们会经常遇到数组长度在一开始并不能确定的情况,那么这个时候就可以用动态数组类vector来定义数组了,这样不仅节省了存储的内存,还使得程序更加灵活可靠。 1.vector的特点 vector是个模板类,提供了动态数组的通用功能,特点如下: (1)在数组末尾添加(删除)元素所需的时间是固定的。 (2)在数组中间添加(删除)元素所需...

不积跬步,无以至千里! 2538

动态数组,Vector,ArrayList

根据不同的数据结构,比如数组,线性,链表结构等开发出不同的类。这些类称为java中集合框架。

weixin_62192155的博客 1195

vector,数组,动态数组效率测试

对vector、数组、new创建的动态数组、预先reverse的vector测试代码如下: #include <iostream> #include <vector> #include <time.h> #include <windows.h> #define QueryFreAndCounter(m_fre,tt) QueryPerformanc...

duiwangxiaomi的博客 1364
上一篇: 图像旋转翻转变换
下一篇: string
B757-300
博客等级 码龄4年 259粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值