C++ vector 超全用法整理

C++里的vector详细讲解 vector是C++ STL中非常强大且易于使用的动态数组容器。它提供了灵活的内存管理、高效的元素访问和丰富的操作函数。然而,在使用vector时,我们也应该注意其性能特点和最佳实践,以确保代码的高效运行。通过合理使用vector的成员函数和注意避免一些常见陷阱,我们可以充分利用这个容器的优势来编写高效且可靠的C++代码。 阅读详情

C++ vector 超全用法整理

一、头文件与定义

#include <vector>
using namespace std;

常见定义方式:

vector<int> v1;                  // 空 vector
vector<int> v2(5);                // 5 个元素,默认 0
vector<int> v3(5, 10);            // 5 个 10
vector<int> v4 = {1,2,3,4,5};     // 初始化列表
vector<int> v5(v4);               // 拷贝构造
vector<int> v6(v4.begin(), v4.end()); // 迭代器构造

二、访问元素

v[i]         // 访问第 i 个元素(不检查越界)
v.at(i)      // 访问第 i 个元素(会抛越界异常)
v.front()    // 第一个元素
v.back()     // 最后一个元素
v.data()     // 返回底层数组指针 int*

三、添加元素

v.push_back(x);        // 尾部添加
v.emplace_back(x);     // 尾部原地构造(效率更高,推荐刷题用)
v.insert(pos, x);      // 在迭代器 pos 前插入 x
v.insert(pos, n, x);   // 在 pos 前插入 n 个 x
v.insert(pos, begin, end); // 插入另一个区间

示例:

v.insert(v.begin() + 2, 99);

四、删除元素

v.pop_back();               // 删除最后一个
v.erase(pos);               // 删除迭代器 pos 处元素
v.erase(begin, end);        // 删除区间 [begin,end)
v.clear();                  // 清空所有元素

五、大小与容量

v.size();          // 实际元素个数
v.empty();         // 是否为空(true/false)
v.resize(n);       // 调整大小为 n,多删少补 0
v.resize(n, x);    // 调整大小为 n,新元素用 x 填充
v.capacity();      // 容量(可存多少不扩容)
v.reserve(n);      // 预分配 n 个空间,不构造对象
v.shrink_to_fit(); // 释放多余容量,size = capacity

六、遍历方式

1. 普通 for

for(int i=0; i<v.size(); i++)
    cout << v[i];

2. 范围 for(C++11)

for(auto x : v)
    cout << x;

3. 迭代器

for(vector<int>::iterator it = v.begin(); it != v.end(); it++)
    cout << *it;

简写:

for(auto it = v.begin(); it != v.end(); it++)

七、排序、去重、反转

#include <algorithm>
sort(v.begin(), v.end());           // 升序
sort(v.rbegin(), v.rend());         // 降序
reverse(v.begin(), v.end());         // 反转
unique(v.begin(), v.end());         // 去重(必须先排序)

常用去重写法:

sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()), v.end());

八、查找

auto it = find(v.begin(), v.end(), x);
if(it != v.end())
    // 找到

九、比较

v1 == v2
v1 != v2
v1 < v2   // 字典序比较

十、二维 vector

vector<vector<int>> mat(3, vector<int>(4, 0));

遍历:

for(auto &row : mat){
    for(auto x : row)
        cout << x;
}

十一、常用技巧

  1. 清空并释放内存
vector<int>().swap(v);
  1. 判断是否存在某个元素
if(find(v.begin(),v.end(),x) != v.end())
  1. vector 转数组
int *p = v.data();
  1. 删除满足条件的元素
v.erase(remove_if(v.begin(),v.end(),[](int x){return x<0;}), v.end());

十二、所有函数速查表

  • begin() / end()
  • rbegin() / rend()
  • cbegin() / cend()
  • size()
  • max_size()
  • resize()
  • capacity()
  • empty()
  • reserve()
  • shrink_to_fit()
  • operator[]
  • at()
  • front()
  • back()
  • data()
  • assign()
  • push_back()
  • emplace_back()
  • pop_back()
  • insert()
  • erase()
  • swap()
  • clear()
  • emplace()

C++ vector库的用法 本文将分4点介绍C++ vector库的用法 vector的初始化 vector对象的操作 2.1 vector迭代器 vector整体操作 vector查找 1. vector的初始化赋值 头文件:#include < vector> 类型: vector<int/char/string/基本数据类型/自定义类型/结构体类型/…>vec ; (1)vector<int> a(10); //定义了10个整型元素的向量,初值为0 (2)vector<int> 阅读详情

相关推荐

C++之STL整理(2)之vector超详用法整理

vector用法(初始化、创建、赋值、方法)整理

ULTRAmanTAROACE的博客 1648

C语言vector的使用方法 C++中vector的用法详解

vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。 为了可以使用vector,必须在你的头文件中包含下面的代码: #include vector属于std命名域的,因此需要通过命名限

My博客 7万+

告别死记硬背!用业务场景驱动理解SAP PS OPSA参数文件配置

本文通过制造业新产品研发项目案例,详细解析SAP PS模块中OPSA参数文件配置的实际应用。从项目立项、WBS分解到研发物料管理,系统讲解关键配置项的业务价值,帮助用户告别死记硬背,实现业务场景驱动的参数配置学习。特别适合制造业项目管理人员提升SAP PS配置效率。

weixin_30415113的博客 479

C++中的vector的详细用法

c++的vector用法

weixin_63246738的博客 2万+

Transformer在量化交易中的应用:从时序预测到策略生成

Transformer模型凭借其强大的自注意力机制,在自然语言处理领域取得了革命性突破。其核心原理是通过并行计算和动态权重分配,有效捕捉序列数据中的长距离依赖关系。这一特性使其在金融时间序列分析中展现出巨大技术价值,能够处理市场数据中的复杂非线性模式和长期关联。在量化交易场景下,Transformer可将价格、成交量等连续数据通过离散化分桶处理,转化为类似文本的序列,进而进行预测或直接生成交易信号。本文以QuantGPT项目为例,探讨了如何将这一前沿AI架构迁移应用于金融领域,涵盖了从数据作为“语言”的编码

weixin_26757949的博客 363

Vue3 - 详细实现流程图编辑器可视化平台示例代码,打造前端web网页流程图在线编辑绘制操作展示,vue3自定义绘制流程图在页面上画流程图功能(提供各种操作按钮及节点控件,界面美观交互式流程图插件)

vue3,绘制流程图,在线流程图制作,在vue3中实现流程图,vue3做一个制作流程图的功能,vue3流程图组件,vue3流程图,流程图绘制展示,vue3流程图可视化在线编辑源码,基于VUE3的在线绘制流程图工具,vue3+logicflow流程图,绘制动态流程图并自定义节点和线,vue使用logicFlow绘制流程图,生成各种流程图图形可连接点移除,基于Vue的流程图组件,工作流程图,流程编辑器,vue3流程组件,vue-flow绘制流程图,绘制流程图示例demo,vue3 logicflow流程图使用教

🏆 前端领域优质创作者 9965

C++ vector的常见用法详解(超详细)\(^o^)/~

vector常用操作方式详解

Curz酥的博客 9万+

使用MATLAB结合EasySpin进行ESR模拟的详细步骤及示例代码

安装EasySpin:确保你已经安装了EasySpin工具箱,它可以帮助你进行ESR模拟。你可以从EasySpin的官方网站(https://easyspin.org/)下载并安装。准备实验数据:将实验得到的EPR数据整理成合适的格式,一般包含磁场(Magnetic Field)和信号强度(Intensity)两列。进行模拟:使用EasySpin的函数对单线态氧自由基和超氧自由基进行模拟。调整参数:通过调整模拟参数,使模拟得到的峰型和峰位置与实验数据尽可能匹配。导出数据。

AI的内部世界的博客 2003

C++ vector的用法(整理)

C++ vector的用法(整理) vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C++ STL的一个重要成员,使用它时需要包含头文件: #include&lt;vector&gt;; 一、vector 的初始化:可以有五种方式,举例说明如下: (1) vector&lt;int&gt; a(10); //定义了10个整型元素...

wkq0825的专栏 74万+

基于深度学习的停车位检测系统(UI界面 + YOLOv8/v7/v6/v5代码 + 训练数据集)

传统的停车位检测方法主要依赖于人工或基于简单图像处理的技术,存在检测速度慢、准确率低、环境适应性差等问题。近年来,随着深度学习技术的快速发展,基于目标检测的停车位检测系统已成为研究的热点。本文基于YOLO(You Only Look Once)系列模型(包括YOLOv5、YOLOv6、YOLOv7和YOLOv8),开发了一个完整的停车位检测系统,支持实时检测、结果可视化以及UI交互界面。本文实现了一个基于深度学习的停车位检测系统,采用YOLO模型在实时视频流中进行高效检测。

YOLO 332

hadoop 切片机制详解

hadoop切片机制详解

congge 1万+

C++ vector的用法总结(整理)

vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。 vector 是C++ STL的一个重要成员,使用它时需要包含头文件: #include&lt;vector&gt; 构造函数 语法:  vector();   vector( size_typ...

sevenjoin的博客 2万+

RK3568平台开发系列讲解(UBOOT篇)u-boot启动流程

U-Boot(Universal Bootloader)是一种开源的引导加载程序,广泛用于嵌入式系统中。它的主要功能是初始化硬件设备,加载操作系统内核,并将控制权交给操作系统。U-Boot的启动流程可以分为多个阶段,以下是典型的U-Boot启动流程:

内核笔记 1231

C++中 vector 的用法(整理)

头文件: #include; 一、vector 的初始化:可以有五种方式,举例说明如下: (1) vector a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。 (2)vector a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1 (3)vector a(b); //用b向量来创建a向量,整体复制性赋值 (4)vector a(b.begin(),b.begin+3); //定义了a值为b中第0个到第

牛大春の博客 1412

防护装备穿戴检查:基于YOLOv8与UI界面的深度学习应用

通过结合YOLOv8模型与UI界面,本系统实现了防护装备穿戴检查的自动化。该系统能够快速识别工作人员是否正确佩戴了所需的防护装备,帮助提高安全管理水平。未来,随着技术的发展,防护装备穿戴检查系统将在更多领域得到应用,如工业现场、建筑工地等,实现更加精确和高效的实时监控。

YOLO 353

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

c++ vector使用 最全整理

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

wei_god的专栏 7454

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C++ map用法总结和vector用法总结

本文仅是用于自己查找方便而写,并不专业,如果想看详解,请查看C++ map用法总结(整理)和C++ Vector的用法总结(整理) map用法总结 map是STL的一个关联容器,为key和value的一对一映射 定义: //需要在头文件处添加#include<map> map<int, int> m; map的基本操作函数:(拷贝自C++ map用法总结(整理)) C++ maps是一种关联式容器,包含“关键字/值”对 begin() 返回指向map头部的迭

weixin_44094072的博客 2204

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

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

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C++—— vector用法(详解!!函数,实现)

C++ vector的用法(整理) vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C++ STL的一个重要成员,使用它时需要包含头文件: #include<vector>; 一、vector 的初始化:可以有五种方式,举例说明如下: (1) vector<int> a(10); //定义了10个整型元素...

优快云131137的博客 7144

C++ STL详解超全总结(快速入门STL)

C++STL合集,包含vector,stack,queue,map,set,array,tuple,deque,priority_queue等诸多内容,全文上万字。

行码棋 30万+

C++ STL vector的insert用法整理

Vector 因为vector是可以和数组一样操作的,所以很多用法都几乎用不到; 比如insert用法,很少用到,但是还是要复习一下; vector<int>ve; ve.insert(ve.begin(),1);//表示在第一个位置插入1 ve.insert(ve.end(),10);//表示在末尾位置追加10 最变态的是vector还可以和二分结合起来用; 例题:洛谷·P1168 中位数 这题是给你n个数字,然后让你求出前1,3,5,…个数的中位数。 一般的思路是开一个multiset

不知所云的博客 2495

c++中容器vector的用法整理

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

fengzhizi76506的博客 832

C++:STL超全用法归纳

C++:STL用法超全归纳1. 初识STL1.1 诞生意义1.1.1 提升复用性1.1.2 为建立数据结构和算法的一套标准,诞生了STL1.2 STL基本概念1.3 STL六大组件1.4 STL中容器、算法、迭代器1.5 容器算法迭代器初识功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文

做一只猫的博客 3005

C++ vector全解析

本文系统介绍了C++标准库中的vector容器,主要涵盖以下内容:1. 构造函数与初始化方式:包括默认构造、填充构造、列表初始化等5种方式,并比较了不同构造方法的差异和使用注意事项。2. 遍历方法:详细对比了下标访问、迭代器遍历和范围for循环三种方式的特点及适用场景。3. 容量管理:解释了size、capacity、resize等成员函数的作用,并分析了不同平台下的扩容机制差异。4. 元素访问与修改:对比了operator[]、at等访问方式的区别,说明了push_back、insert等修改操作的特性。

有且仅有质量分95以上的博客 1396

【STL】C++ STL超全总结

C++ STL 1 vector 1.1 介绍 vector为可变长数组(动态数组),定义的vector数组可以随时添加数值和删除元素。在局部函数中开vector数组,是在堆空间里面开的,与开全局变量比较类似,所以经常见到在局部函数中开大容量数组。 初始化一维初始化 指定长度和初始值的初始化 初始化中有多个元素 拷贝初始化 二维初始化 定义第一维固定长度为,第二维可变化的二维数组 行列均可变 行列长度均固定 行 列初始值为0 c++17或者c++20支持的形式(不常用) .........

行码棋 3641
上一篇: L1-101 别再来这么多猫娘了!
下一篇: L1-102 兰州牛肉面、 L1-103 整数的持续性、L1-104 九宫格
ab123768
博客等级 码龄3年 43粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ab123768

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值