C++学习Vol1:vector的用法

考研复试机试C++数据结构与算法模板大全 数据结构与算法是计算机科学的核心基础,其中线性表、树、图等基础数据结构在工程实践中广泛应用。通过STL等标准库实现的高效数据结构操作,能够显著提升代码执行效率。在考研机试等编程能力测试场景中,熟练掌握动态数组、链表、二叉搜索树等数据结构的工程实现尤为关键。本文提供的C++模板代码针对机试高频考点,包含动态数组的2倍扩容策略、链表的狸猫换太子删除法等23种数据结构实现,以及DFS的三种写法和背包问题的空间优化等18类算法模板,特别适合需要快速提升编程实战能力的考生。所有代码均通过边界测试验证,并附带时间复杂度 阅读详情

一、基本概念

使用它首先要引入头文件

#include <vector>

它是一个封装了动态大小数组的顺序容器。在C++、Java中的数组就是顺序存储数组的,且不能像Python那样在一个数组中存储多种数据类型的数据,不过那种一般属于列表。

由于它用来存储动态数组,所以一般来说应该使用在获取用户输入等类似的应用场景,而不是用来存储固定长度数组的。

二、使用格式

vector<类型>标识符
vector<类型>标识符(最大容量)
vector<类型>标识符(最大容量,初始所有值)
 
int i[5]={1,2,3,4,5}
vector<类型>vi(i,i+2);//得到i索引值为3以后的值
 
vector<vector<int>>v; 二维向量//这里最外的<>要有空格。否则在比较旧的编译器下无法通过

可以看到,它的使用方式为:首先声明vector关键字,然后在后面的尖括号中写上数据类型 ,定义这个数组的数据类型,之后写上标识符,一个vector动态数组就如此定义完成,但如果还想添加它的最大容量和初始所有值,可以在后面的圆括号中进行添加。

上面例子给出的用法,是定义一个长度为5的整形数组,赋值初始值为12345,然后将数组的首地址传给了标识符后的最大容量位置,将数组中的3传入了初始所有值的位置。

它里面涉及到的函数有

push_back()  //在数组的最后添加一个数据
 
pop_back() //去掉数组的最后一个数据
 
at()  //得到编号位置的数据
 
begin() //得到数组头的指针
 
end() //得到数组的最后一个单元+1的指针
  
find()  //判断元素是否存在
 
front() //得到数组头的引用
 
back() //得到数组的最后一个单元的引用
 
max_size() //得到vector最大可以是多大
 
capacity() //当前vector分配的大小
 
size() //当前使用数据的大小
 
capacity(); //返回a在内存中总共可以容纳的元素个数
 
a.reserve(100); //改变当前vecotr所分配空间的大小将a的容量(capacity)扩充至100,也就是说现在测试a.capacity();的时候返回值是100
 
a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,增加的元素其值默认为0
 
a.resize(10,2); //将a的现有元素个数调至10个,多则删,少则补,增加的元素其值为2
 
erase() //删除指针指向的数据项
 
clear() //清空当前的vector
 
rbegin() //将vector反转后的开始指针返回(其实就是原来的end-1)
 
rend() //将vector反转构的结束指针返回(其实就是原来的begin-1)
 
empty() //判断vector是否为空
 
swap() //与另一个vector交换数据
a.swap(b); //b为向量,将a中的元素和b中的元素进行整体性交换
 
reverse(obj.begin(),obj.end());反向迭代器,实现元素对调

可以使用这些函数来进行动态数组的操作。 

参考文章:C++中的vector的详细用法_c++vector用法-优快云博客

本人博客内容仅供交流学习用,如涉侵权联系本人侵删。 

ZMQ REQ与PUB模式详解:C++高性能网络通信实战指南 在分布式系统和网络编程中,进程间通信(IPC)与网络通信是构建高性能应用的核心基础。其原理在于通过特定的协议和模式,在不同进程或网络节点间高效、可靠地传输数据。从技术价值看,优秀的通信框架能极大简化开发复杂度,提升系统吞吐量和可维护性。在实际应用场景中,无论是微服务间的RPC调用,还是实时数据广播(如金融行情、游戏状态同步),都需要根据业务特性选择合适的通信模式。ZeroMQ(ZMQ)作为一个高性能的异步消息库,提供了多种通信模式来应对不同场景。其中,**REQ/REP(请求-应答)模式**适用于需要严格同 阅读详情

相关推荐

C++中vector的使用方法4

1 使用索引访问vector中的对象 1.1 索引值在合理范围之内 可以使用索引访问vector中的对象,需要注意的是此时的索引变量的类型是相应的size_type。 vector<int> vec1 = { 1,2,3,4,5 }; vector<int>::size_typest = 2; cout <<vec1[st]; 其中,vec1是一个有5个int元素的vector,st是vector<int>::size_type类型的变量,用来表..

hou09tian的博客 1528

C++ std::set深度解析:从红黑树原理到高效应用实践

在C++标准模板库(STL)中,关联容器是实现高效数据检索与组织的重要工具。其核心原理基于特定的数据结构(如红黑树)和比较机制,确保元素的有序性与唯一性,从而在数据检索、去重和范围查询等场景中提供对数级的时间复杂度保证。这种设计为需要自动排序且元素唯一的集合操作带来了显著的技术价值,广泛应用于需要维护有序数据集、进行快速存在性判断或高效范围查询的工程实践中,例如金融交易系统中的订单簿、游戏中的状态管理或配置项存储。本文以std::set为例,深入剖析其作为基于红黑树实现的有序关联容器的内部机制,详解其插入、

weixin_30572613的博客 442

智能枕头

睡觉和吃饭是一样重要的,一个人想要健康的体魄,不仅要饮食得当,更需要有一个好的睡眠质量。随着人们生活品质的提高,人们对于睡眠的要求越来越高,那么就非常需要一款舒适的枕头。为了适应市场的需求,我爱物联网推出了智能枕头。因为智能枕头可以给头部及颈椎一个良好的承托力,舒适、柔软、放松,让人更好的进入睡眠。 目录 一、智能枕头方案介绍 二、智能枕头的优点 三、智能枕头功能介绍 四、智能枕头APP开发 五、...

6108我爱物联网方案开发优快云博客 3660

STL之向量(vector)

转载:点击打开链接 一、向量的介绍 向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 与string相同, vector 同属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版。 在使用它时, 需要包含头文件 vector, #include

MessCodes 2492

PC微信逆向) 读取内存联系人链表

首先从一些网络上搜索到的信息可以得出联系人列表是保存在内存里的,并且是全局变量不会被释放,所以我们可以通过搜索某个联系人的信息来定位

Qwertyuiop2016的博客 2920

【Qt】解决 FTH: (11284): *** Fault tolerant heap shim applied to current process. (亲测有效)

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers。容错堆垫片应用到当前的过程。这通常是由于以前的崩溃。win + r,输入regedit。

Fanjufei的博客 830

C++的vector用法详解!!!强大索引,一目了然,分分钟搞定!!!

C++的vector用法详解,涉及增删改查以及常用方法,目录清晰明了,帮助你快速解决问题

weixin_50552586的博客 1万+

MobileViT替换YOLOv11主干网络:轻量化新思路-(用MobileViT等轻量视觉Transformer降低计算成本)

在计算机视觉领域,目标检测一直是核心任务之一,而YOLO(You Only Look Once)系列算法因其出色的速度-精度平衡成为工业界和学术界的热门选择。随着YOLOv11的推出,模型性能达到了新的高度,但其计算复杂度和参数量也随之增加,这对资源受限的移动设备和嵌入式系统提出了挑战。与此同时,视觉Transformer(ViT)的出现为计算机视觉带来了全新范式,但其庞大的计算需求限制了在移动端的应用。MobileViT作为一种创新的轻量级视觉Transformer架构,巧妙结合了CNN的归纳偏置优势和V

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1647

C++中二维向量使用及排序

二维vector

脚踏实地,仰望星空 8690

用 ADBC 把动态查询做得又快又稳:从 CL_SQL_STATEMENT 到安全取数的工程化实践

本文介绍了ABAP中ADBC(ABAP Database Connectivity)技术的核心用法与最佳实践。ADBC作为Open SQL的补充,适用于动态查询、数据库特性调用等场景。文章通过示例代码详细演示了使用ADBC执行查询的完整流程:创建SQL语句、执行查询获取结果集、批量装载数据到内表,以及分包读取处理大数据量。特别强调了动态SQL的安全防护措施,包括输入转义和参数绑定等防注入技术。同时对比了ADBC与Open SQL的适用场景,指出ADBC更适合需要动态访问数据库原生功能的场合。文章还分析了代码

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1773

【ARM CoreLink 系列 3 -- CCI-550 控制器介绍 】

Arm CoreLink CCI-550 Cache Coherent Interconnect 扩展了 CoreLink CCI-500。它在 big.LITTLE 处理器集群之间提供完整的缓存一致性,并为其他代理(如 Mali GPU、网络接口或加速器)提供 I/O 一致性。CoreLink CCI-550 提供可扩展和可配置的互连,使 SoC 设计人员能够以尽可能小的面积和功耗满足性能目标,并且还增加了可降低整体系统延迟的监听滤波器。

CodingCos的博客 2210

C++之vector

转载自https://www.youkuaiyun.com/gather_2a/MtzaAg3sMjEtYmxvZwO0O0OO0O0O.html vec[i] - 访问索引值为 i 的元素引用。 (索引值从零起算,故第一个元素是vec[0]。) vec.at(i) - 访问索引值为 i 的元素的引用,以 at() 访问会做数组边界检查,如果访问越界将会抛出一个例外,这是与operator[]的唯一差异。 v...

雪山飞狐 563

uniapp - 超详细实现播放 svg / svga 格式动画组件插件,用于直播间赠送礼物特效动画或项目动画特效较多的应用(新手小白保姆级教程,提供插件+详细运行示例+使用文档+注意事项+格式说明)

uniappsvga,uniapp播放svga动画,uniapp中使用svga动画详细教程,uniapp播放svga的插件,uniapp有没有调用svga格式动画的组件插件,uinappH5App小程序全端兼容的svga播放器免费好用插件,uniapp好用的svga格式动画插件,在uniapp中使用SVGAPlayer播放svga动画,uniapp中使用svga动画,编译到apph5,uniapp运行svg动画,uniapp怎么使用svga文件格式,uniapp播放svg格式的动画教程,un

🏆 前端领域优质创作者 1万+

C++学习Vol2:vector关于其函数使用的补充

2.迭代器和指针是包含关系,指针是迭代器的具象化,指针具备了所有迭代器的特点,但是迭代器是一个抽象概念,要访问顺序容器和关联容器中的元素,需要通过“迭代器(iterator)”进行。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。使用auto是因为迭代器的数据类型不方便指定,所以直接auto比较省事,当b没有指向vector的最后一个元素时,才进行下列的判定,最后擦除所有多余的元素进行输出。

qq_46025708的博客 110

lwip-2.0.3

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

计算机控制技术及应用

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

STL Containers & Iterators part2(Chapter 4 of Thinking in C++ Vol 2)

The vector is intentionally made to look like a souped-up array, since it has array-styleindexing but also can expand dynamically. vector is so fundamentally useful that it wasintroduced in a very ...

weixin_30551963的博客 195

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Think in in C++[vol2]【7】通用容器

1.容器及其分类总结 分类 容器 序列容器 vector、list、deque 容器适配器 queue、stack、priority_queue 关联式容器 set、map、multiset、multimap

qq_43118572的博客 150

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

STL Containers & Iterators part1(Chapter 4 of Thinking in C++ Vol 2)

code1#include<iostream>2#include<vector>3#include<iterator>4usingnamespacestd;56template<classCont,classPtrMemFun>7voidapply(Cont&c,PtrMemFunf)8...

weixin_30247781的博客 180

C++ Primer Plus 第六版 编程练习题及详细答案

C++编程练习摘要 本文档包含了一系列C++编程练习的解决方案,涵盖了基础语法、函数、类、模板等核心概念。练习分为多个章节,每章包含若干题目。 主要内容 基础练习:变量声明、输入输出、简单计算等基础语法练习 函数与结构:函数定义、参数传递、结构体使用 面向对象:类定义、继承、多态、运算符重载 模板与STL:模板函数、模板类、标准模板库应用 文件I/O:文件读写操作 异常处理:异常类设计与使用 典型示例 简单I/O:显示姓名地址、单位换算 函数应用:温度转换、字符串处理 类设计:复数类、链表类、银行模拟类 S

misterxize的博客 393

C++11四大核心特性:lambda、bind、function与可变模板协同实战

C++11引入的lambda表达式、std::bind、std::function和可变参数模板,共同构成了现代C++工程化落地的底层支柱。它们分别解决即兴逻辑封装、参数预设、类型擦除与泛型复用等关键问题,其协同机制远超语法糖范畴——lambda生成闭包对象实现零开销抽象,std::bind依赖可变模板支持任意参数绑定,std::function通过小对象优化平衡性能与灵活性。在风控系统、异步任务、日志库等高频场景中,合理组合这四大特性可显著降低内存泄漏率、提升编译效率并保障线程安全。本文聚焦生产级实践,解

weixin_34075268的博客 475

C++学习篇(8)-序列式容器list

更多精彩请关注微信公众号“爱折腾的码农”,二维码见下图。 本篇内容主要介绍STL六大组件之一的序列式容器list,其是一种环状双向链表,只支持双向顺序访问,在任何位置进行插入或删除操作速度都很快。另外,如果对文章内容感兴趣,欢迎大家多多关注本公众号,另外本人将自己在秋招过程中遇到的一些算法题和总结的典型代码题汇总成word文档和pdf文档。里面内容包括但不限于数据结构中的冒泡、归并、快排等排序方法,二叉树遍历、前缀树、哈希表、LRU、股票买卖、C++读取输入方法的实现方法等内容,如果感兴趣...

weixin_43305362的博客 308

从‘小杨买饮料’到实际问题:用C++动态规划解决预算有限下的最优采购问题

最直观的解决方法是尝试所有可能的饮料组合,计算每种组合的总容量和总花费,然后筛选出满足容量要求且花费最少的方案。对于N种饮料,这需要检查$2^N$种可能性——当N超过20时,这种方法就变得完全不现实。注意:在CCF-GESP等认证考试中,通常要求使用标准C++语法,避免使用非标准的编译器扩展特性。本文将从一个简单的"买饮料"问题切入,揭示这类决策背后的通用算法框架,并展示如何用C++的动态规划技术将其转化为可执行的解决方案。通常取比最大可能解稍大的值,如1e9,同时确保不会导致整数溢出。

山水缘 624

C++实现Everest期权量化测试:蒙特卡洛模拟与并行计算实战

蒙特卡洛模拟是金融工程与量化交易中用于复杂衍生品定价和风险分析的核心数值方法,其原理是通过生成大量随机路径来模拟资产价格未来走势,并基于这些路径计算期望收益。该技术能有效处理无解析解的路径依赖期权,如障碍期权、亚式期权等,在量化策略回测和风险管理中具有重要价值。本文以多资产路径依赖的Everest期权为例,详细展示了如何利用C++实现高性能的蒙特卡洛模拟引擎,其中涉及多资产相关路径生成(通过Cholesky分解处理相关性矩阵)、方差缩减技术(如对偶变量法)以及基于多线程的并行计算优化。通过将金融数学模型转化

weixin_33843409的博客 351

C++面向对象编程:从类与对象基础到封装、构造析构函数实战

面向对象编程(OOP)是一种将数据与操作数据的方法捆绑在一起的编程范式,其核心思想是通过封装、继承和多态来模拟现实世界。在C++中,类作为对象的蓝图,定义了数据成员和成员函数,而对象则是类的具体实例。封装作为OOP的基石,通过访问控制修饰符(public、private、protected)将数据隐藏,仅通过公共接口进行访问,这提升了代码的安全性和可维护性。构造函数与析构函数管理对象的生命周期,确保资源的正确初始化和释放,其中析构函数遵循RAII原则,是防止内存泄漏的关键。静态成员属于类而非对象,用于实现类

weixin_30565199的博客 353

Caffe—:convert_imageset.cpp函数分析和ImageNet数据集创建lmdb类型的数据

[首页][新闻] [文章] [登录]  [注册]   首页 Web开发 Windos  首页 > 数据库技术 > 详细 Caffe3——ImageNet数据集创建lmdb类型的数据 时间:2015-05-05 16:03:41      阅读:818      评论:0    

u014114990的专栏 5573

动态规划实战:带附件的多重背包问题解析与C++实现

动态规划是解决组合优化问题的核心算法思想,其核心原理是通过将复杂问题分解为重叠子问题并存储子问题的解来避免重复计算,从而高效求解最优解。在算法设计与工程实践中,背包问题作为动态规划的经典模型,广泛应用于资源分配、投资组合等场景。其中,多重背包问题在物品数量限制的基础上,进一步引入附件依赖关系,形成了更复杂的组合决策需求。本文聚焦于这一技术难点,通过将问题转化为分组背包并应用二进制优化,最终简化为标准的01背包问题,提供了清晰的C++实现方案,旨在帮助开发者应对算法面试与后台系统中的实际资源分配挑战。

weixin_33695082的博客 393
下一篇: ESP32S3学习Vol1:I2C协议与使用
Kroto x
博客等级 码龄7年 1粉丝 4原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值