C++vector的常用接口及其介绍

【C++】vector的介绍 | 常见接口的使用 vector是一个类模板。它能够容纳各种类型的对象作为其元素,并且可以动态地调整大小。可以理解为动态数组。它像数组,又不像。vector也采用的连续存储空间来存储元素。这意味着可以采用下标对vector的元素进行访问,和数组一样高效。它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质来说,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小,为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。 阅读详情

在 C++ 中,vector 是一个非常常用的动态数组容器,它定义在 <vector> 头文件中。以下是 vector 的一些常用接口及其介绍:

构造函数

  • vector():默认构造函数,创建一个空的 vector。
std::vector<int> v;

  • vector(size_type n, const value_type& val = value_type()):创建一个包含 n 个元素的 vector,每个元素都初始化为 val。
std::vector<int> v(5, 10); // 包含5个值为10的元素

  • vector(const vector& other):复制构造函数,创建一个与 other 相同的 vector。
std::vector<int> v1(3, 1);
std::vector<int> v2(v1); // v2 是 v1 的副本

  • vector(InputIt first, InputIt last):使用迭代器范围 [first, last) 内的元素初始化 vector。
int arr[] = {1, 2, 3};
std::vector<int> v(arr, arr + 3); // 使用数组元素初始化 vector

容量相关

  • size():返回 vector 中元素的个数。
std::vector<int> v = {1, 2, 3};
std::cout << v.size() << std::endl; // 输出 3

  • capacity():返回当前分配的内存中可以容纳的元素个数。
std::vector<int> v;
v.reserve(10);
std::cout << v.capacity() << std::endl; // 输出 10

  • empty():判断 vector 是否为空。
std::vector<int> v;
if (v.empty()) {
    std::cout << "vector is empty" << std::endl;
}

  • reserve(size_type n):请求改变容量大小,以至少容纳 n 个元素。
std::vector<int> v;
v.reserve(10); // 预分配能容纳10个元素的空间

  • resize(size_type n, value_type val = value_type()):改变 vector 的大小为 n。如果 n 小于当前大小,会删除多余的元素;如果 n 大于当前大小,会在末尾添加值为 val 的元素。
std::vector<int> v = {1, 2, 3};
v.resize(5, 0); // v 变为 {1, 2, 3, 0, 0}

元素访问

  • operator[](size_type n):返回索引为 n 的元素的引用,不进行边界检查。
std::vector<int> v = {1, 2, 3};
std::cout << v[1] << std::endl; // 输出 2

  • at(size_type n):返回索引为 n 的元素的引用,进行边界检查,如果 n 超出范围会抛出 std::out_of_range 异常。
std::vector<int> v = {1, 2, 3};
try {
    std::cout << v.at(1) << std::endl; // 输出 2
    std::cout << v.at(10) << std::endl; // 抛出 std::out_of_range 异常
} catch (const std::out_of_range& e) {
    std::cerr << e.what() << std::endl;
}

  • front():返回第一个元素的引用。
std::vector<int> v = {1, 2, 3};
std::cout << v.front() << std::endl; // 输出 1

  • back():返回最后一个元素的引用。
std::vector<int> v = {1, 2, 3};
std::cout << v.back() << std::endl; // 输出 3

修改操作

  • push_back(const value_type& val):在 vector 的末尾添加一个元素。
std::vector<int> v = {1, 2, 3};
v.push_back(4); // v 变为 {1, 2, 3, 4}

  • pop_back():删除 vector 末尾的元素。
std::vector<int> v = {1, 2, 3, 4};
v.pop_back(); // v 变为 {1, 2, 3}

  • insert(iterator pos, const value_type& val):在指定位置 pos 插入一个元素 val。
std::vector<int> v = {1, 2, 4};
v.insert(v.begin() + 2, 3); // v 变为 {1, 2, 3, 4}

  • erase(iterator pos):删除指定位置 pos 的元素。
std::vector<int> v = {1, 2, 3, 4};
v.erase(v.begin() + 2); // v 变为 {1, 2, 4}

  • erase(iterator first, iterator last):删除迭代器范围 [first, last) 内的元素。
std::vector<int> v = {1, 2, 3, 4, 5};
v.erase(v.begin() + 1, v.begin() + 3); // v 变为 {1, 4, 5}

  • clear():删除 vector 中的所有元素,将大小变为 0,但容量不变。
std::vector<int> v = {1, 2, 3};
v.clear();
std::cout << v.size() << std::endl; // 输出 0

其他

  • swap(vector& other):交换当前 vector 与 other 的内容。
std::vector<int> v1 = {1, 2, 3};
std::vector<int> v2 = {4, 5, 6};
v1.swap(v2);

⚡【C++要笑着学】(18) vector类:vector 常用接口介绍 | 遍历操作 | 空间操作 | 增删查改 本章开始讲解 vector,首先对 vector 进行介绍,然后讲解 vector 常用的接口。像 emplace 等涉及右值引用的接口,我们等后期讲C++11的时候再作讲解。 阅读详情

相关推荐

本地大模型5:在pycharm用python调用ollama本地大模型

python调用ollama本地大模型

weixin_74825941的博客 8377

STL-vector常用接口介绍

vector 简介: 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。 3. 本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存...

小白元的博客 1482

谈谈人大金仓数据库

人大金仓数据库(Kingbase)是国产自主研发的关系型数据库管理系统,兼容主流数据库语法,支持高并发、高安全性及国产化适配。该数据库提供完整的安装部署方案,包括环境准备、初始化配置和验证流程,并配备专业的数据迁移工具(KDMS)实现从Oracle/MySQL等数据库的平滑迁移。系统提供KStudio等图形化管理工具,支持性能监控、备份恢复等运维功能,同时具备性能调优、高可用架构、分区表管理等高级特性,满足政府、金融等领域的企业级需求。

蜚鸣的博客 2099

【C++】vector(上):vector的常用接口介绍(含迭代器种类的介绍)

一、vector的介绍(包含vector类中typedef的部分类型别名介绍)二、vector类的常用接口说明(vector类对象的常见构造(重点)、容量操作、遍历操作 和 修改操作等接口,以及一些vector类非成员函数的接口)

无限进步!!! 1874

DSSAT模型实战:从基础配置到气候情景模拟

本文详细介绍了DSSAT模型在农业模拟中的应用,从基础配置到气候情景模拟的全流程实战指南。通过土壤-植物-大气连续体的动态关系建模,DSSAT能精准预测作物产量,误差率低至8%。文章涵盖气象数据处理、土壤参数配置、管理措施调控等核心技巧,并提供了Python脚本和可视化方法,助力农业科研与决策。

weixin_29264201的博客 1015

SAP SD销售订单抬头自定义字段增强:BADI_SLS_HEAD_SCR_CUS实战指南

SAP ERP系统中的销售订单管理是企业核心业务流程,经常需要扩展标准功能来满足个性化业务需求。在SAP SD模块中,销售订单抬头屏幕的增强是常见需求。通过BADI(Business Add-In)技术,可以在不修改标准代码的前提下,实现自定义字段的添加与数据处理。本文详细介绍了如何使用BADI_SLS_HEAD_SCR_CUS实现销售订单抬头自定义字段,包括函数组子屏幕设计、数据存储表构建以及BADI方法的具体实现。这种增强方式适用于VA01/VA02/VA03等事务,保证了系统升级的兼容性和维护的便捷性

weixin_29758911的博客 349

【C++】vector的模拟实现和相关接口介绍

这章主要分享的是vector的模拟实现以及相关接口的介绍。我们还对迭代器的失效作了举例示范,迭代器在什么情况下会失效。同时这章是建立在类模板的基础之上的。所以在学习的过程中也帮助我们更好的了解模板。

jhj9201633的博客 790

可食用野生植物检测实战:基于YOLOv11的智能识别系统全流程指南

本文介绍了一种基于YOLOv11的可食用野生植物智能识别系统。该系统通过深度学习技术,能在0.2秒内精准识别植物是否可食用,准确率高达92%。文章详细阐述了从数据采集、标注到模型训练、验证的全流程,并开发了用户友好的Tkinter交互界面。该系统解决了户外探险和植物研究中植物识别的痛点,具有高精度、实时性和强泛化能力的特点,为户外安全提供了智能化解决方案。

FJN110的博客 164

『 C++ 』vector的常用接口介绍

C++ STL六大组件中的容器之一,vector是表示可变大小数组的序列容器。

weixin_72040293的博客 789

SAP SD销售订单的ATP检查简介

如果可用性检查组设置为01(汇总需求),系统将更新销售订单需求到汇总表VBBS,该表中未记录销售订单号码,因此在MD04中不会显示销售订单号码,而是按天汇总显示销售需求。如果物料的可用性检查组设置为02(单个需求),系统将更新销售订单需求到表VBBE,该表中记录了销售订单号码,因此在MD04显示销售订单的号码以及需求,前面的文章中我们解释了PP模块中的ATP检查,也解释了MM模块中的ATP的检查,本文将说明一下SD模块中的ATP检查。可用性检查用的最多的就是02,有兴趣的同学可以测试一下可用性检查01。

我小时候很黑的博客 4295

使用 MATLAB/Simulink 进行锂电池SOC估算和等效电路建模

本文介绍了使用MATLAB/Simulink进行锂电池SOC估算与等效电路建模的方法。首先阐述了SOC估算和等效电路模型的背景及重要性,然后详细讲解了系统结构设计的主要组成部分,包括电池模块、SOC估算模块(采用卡尔曼滤波器算法)和等效电路模型等。文章重点分步说明了建模过程:从创建Simulink项目、搭建电池模块,到实现SOC估算算法(提供示例代码),构建等效电路模型(Thevenin模型示例),添加传感器模块,最后设置仿真参数。通过仿真运行分析关键指标(SOC估算误差、电压偏差等)来评估模型性能,为锂电

xiaoheshang_123的博客 264

【C++初阶】第十篇——vector(vector常见接口的用法与介绍+vector的模拟实现)

⭐️这是年前的最后一篇博客,今天我先为大家介绍STL中的vector容器,我会先介绍它的一些个常见接口以及用法,然后再模拟实现它,这样我们就能够比较深入地了解这个容器。 ⭐️博客代码已上传至gitee:https://gitee.com/byte-binxin/cpp-class-code 目录????vector的介绍????vector中常见接口的介绍????vector的构造和析构函数????vector的三种遍历方式????vector的增删查改????vector容器的容量变化和大小增减????

weixin_58450087的博客 1760

【MicroPython编程-ESP32篇:设备驱动】-SHT31温度湿度传感器驱动

SHT31 是 Sensirion 的下一代温湿度传感器。 它建立在一个新的 CMOSens® 传感器芯片之上,该芯片是 Sensirion 新湿度和温度平台的核心。

视觉与物联智能 229

【C++】vector基本接口介绍

快来和我一起学习vector!!

小羊study_sheep的博客 2597

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【C++】容器:vector的接口介绍大全

vector():创建一个空的 vector。:创建包含 count 个值为 value 的元素的 vector。:复制另一个 vector。:使用初始化列表创建 vector。:创建一个 vector,其元素由范围 [first, last) 内的元素初始化。operator=:将一个 vector 赋值给另一个 vector。:用范围 [first, last) 内的元素替换当前 vector 的内容。:用 count 个值为 value 的元素替换当前 vector 的内容。

一岁就可帅的博客 3012

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C++入门之stl六大组件--Vector库函数的介绍,以及模拟实现一些常用接口

本节主要阅读了vector的源码,以及vector的使用vector是表示可变大小数组的序列容器。就像数组,vector也采用连续空间来存储元素,即可以使用下标对vector元素访问,但是它的大小是可以动态改变的,并且它的大小会被容器自动处理本质上,vector使用动态分配数组来存储它的元素,当新元素插入,就需要重新分配大小增加存储空间。它的做法是,动态开辟一个新的数组,然后将元素移动进来。时间代价较高。事实上,每当一个新的元素加入到容器,并不会每次都重新分配空间。

jolly0514的博客 1287

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++:STL(四)之vector的基本介绍与使用方式|容器接口

本文主要是介绍vector容器以及接口的使用方式,和string类的那一节相似!

白乐天_ξ( ✿>◡❛)的博客 1565

【c++进阶[五]】list相关接口介绍及list和vector的对比

本章重点本章重点讲解list的接口函数的熟悉,并且讲解list迭代器失效的特性和迭代器的功能分类以及算法库函数中谁能用谁不能用,最后比较一下list和vector的优势和劣势对上诉大致理解如下:1.list是一种可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2.list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立结点当中,在结点中通过指针指向其前一个元素和后一个元素。

weixin_62196764的博客 1253

C++vector类介绍和常用接口说明(超全超详细)

C++vector类介绍和常用接口说明(超全超详细),想要彻底了解C++vector,看这一篇就够了!!!

wer24_25的博客 2153

【C++】vector入门,各个vector接口的详细介绍和使用,简单模拟实现vector!!!!

vector入门介绍

w903414的博客 1011

【C++学习笔记】vector构造函数

【代码】【C++学习笔记】vector构造函数。

信仰的博客 557

【C++】vector

6.读者老爷好,俺最近浅浅学了一些vector的知识,vector是STL容器的一种。有兴趣的话不妨垂阅!首先使用vector需要包含头文件好吧。中的其中一个类模板就是本博客要介绍的。进入可以看到:确实是一个类模板,第一个模板参数就是要存储的数据的类型,第二个模板参数是跟空间配置器和内存池相关的,不用理先。那我们就浅浅介绍一下。其实当这个类模板实例化成具体的类时,这些个具体的类底层就是顺序表。也就是可以认为vector是“一个可以存放任意类型数据的顺序表”。

X__cheng的博客 1288

C++:vector使用以及模拟实现

vector使用以及模拟实现

2301_76269963的博客 878

C++ | vector用法指南

关于vector,还是分为两部分来学习,首先,我们得学会vector常用接口的使用,然后我们围绕着这些接口进行一次模拟实现,深刻理解与掌握vector相关知识;本文所有资料查阅于C++文档首先我们需要看的便是构造函数了,相对于string,vector的构造函数就比较精简了;有如下四个;// 1、无参构造// 2、用n个val初始化vector// 3、迭代器区间构造// 任意合理迭代器区间都可(左闭右开)// 还可以用数组名(左闭右开)// 4、vector构造。

Nice_W的博客 1190

C++从入门到实战(十九)C++ vector容器及其常用接口

本文介绍了C++ STL中的vector容器及其常用接口。vector是动态数组容器,可自动扩容存储任意类型数据。文章详细讲解了vector的多种构造方式(默认构造、指定大小、迭代器范围构造等),以及遍历方法(下标访问、at()安全访问、迭代器和范围for循环)。通过对比表格和代码示例,帮助读者掌握vector的核心功能和使用场景,为后续学习复杂容器打下基础。全文结合官方文档和实际应用,提供了清晰直观的语法说明和示例输出。

2402_83322742的博客 1683

C++STL--------vector

是一个类模版,可以创建各种类型的数组。

2401_83305953的博客 715
上一篇: C++map的详解和常用接口
下一篇: C++List模拟实现|细节|难点|易错点|全面解析|类型转换|
Arcane Code
博客等级 码龄3年 598粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值