当前位置: 首页 > news >正文

C++ vector的使用(一)

vector

vector类似于数组

遍历

这里的遍历跟string那里的遍历是一样的

1.auto(范围for)
2.迭代器遍历
3.operator

void vector_test1()
{vector<int> v;vector<int> v1(10, 1);//初始化10个都是1的变量vector<int> v3(++v1.begin(), --v1.end());// 让迭代器begin+1,end-1,所以打印时会少两个数//operator[] 遍历for (int i = 0; i < v1.size(); ++i){cout << v1[i] << " ";}cout << endl;//auto 遍历for (auto a : v3){cout << a << " ";}cout << endl;//迭代器 遍历vector<int>::iterator it = v3.begin();for (int i = 0; i < v3.size(); ++i){cout << *it << " ";}cout << endl;
}

vector的扩容与缩容机制

扩容的代码

void TestVectorExpand()
{size_t sz;vector<int> v;//v.reserve(100);如果知道要扩容100个数,那么就预留100个数的空间sz = v.capacity();cout << "capacity changed: " << sz << '\n';cout << "making v grow:\n";for (int i = 0; i < 100; ++i){v.push_back(i);if (sz != v.capacity()){sz = v.capacity();cout << "capacity changed: " << sz << '\n';}}
}

vs2022下是1.5倍的扩容:
在这里插入图片描述
Linux下是2倍的扩容:
在这里插入图片描述
在这里插入图片描述
reserve函数最少开存n个数字的大小,可能会大于n个
vector的reserve是不缩容的,而string的reserve是有可能缩容的(在vs下不缩容,在linux下缩容)

验证vs下是否要缩容:

void vector_test2()
{vector<int> v(10, 1);v.reserve(20);cout << v.size() << endl;cout << v.capacity() << endl;v.reserve(15);cout << v.size() << endl;cout << v.capacity() << endl;v.reserve(5);cout << v.size() << endl;cout << v.capacity() << endl;
}

很显然是不缩容的
在这里插入图片描述
并且Linux下也是不缩容的
在这里插入图片描述

resize

n < size,删除数据,保留前n个数据
size < n < capacity,这里会增加n-size个数据,并且可能会缩容
n > capacity,会插入数据,你给了数据,就插入你给的数据,没给数据就插入缺省值,并且会扩容(2*n)

在这里插入图片描述

在这里插入图片描述

void vector_test3()
{vector<int> v(10, 1);v.reserve(20);cout << v.size() << endl;//10cout << v.capacity() << endl;//20v.resize(15,2);cout << v.size() << endl;//15cout << v.capacity() << endl;//20v.resize(25,3);cout << v.size() << endl;//25cout << v.capacity() << endl;//30v.resize(5);cout << v.size() << endl;//5cout << v.capacity() << endl;//30
}

insert + push_back+erase

vector中的insert只支持迭代器的
push_back尾插
erase删除pos位置的数据,也可以删除任意位置的数据,直接+n

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

void vector_test4()
{vector<int> v(10, 1);v.push_back(2);v.insert(v.begin(), 20);v.insert(v.begin() + 3, 10);for (auto a : v){cout << a << " ";}cout << endl;
}

流插入(cout)和流提取(cin)

vector不支持流插入和流提取
但vector自己实现的流插入和流提取很简单

void vector_test5()
{vector<int> v(5, 0);// 流插入for (size_t i = 0; i < 5; i++){cin >> v[i];}// 流提取for (auto e : v){cout << e << " ";}cout << endl;
}

vector不能代替string,因为vector没有 \0,还有许多其它原因,send(c_str()); 在传文件的时候要c_str(),并且要兼容C语言

void vector_test6()
{ vector<string> v;string s("hello world");v.push_back(s);v.push_back("yyyyyy");// 将 const char* 类型强转为string类型// ch不改变用const,减少拷贝用引用,因为v的元素是string类型的for (const auto& ch : v){cout << ch << " ";}cout << endl;// 10*5vector<int> v1(5, 1);vector<vector<int>> vv(10, v1);vv[1][2] = 2;// 定义10行5列的数组,类型于二维数组,但是是两个operator[]的使用
}

相关文章:

C++ vector的使用(一)

vector vector类似于数组 遍历 这里的遍历跟string那里的遍历是一样的 1.auto&#xff08;范围for&#xff09; 2.迭代器遍历 3.operator void vector_test1() {vector<int> v;vector<int> v1(10, 1);//初始化10个都是1的变量vector<int> v3(v1.begin(), --…...

深入浅出:ProcessPoolExecutor 处理异步生成器函数

深入浅出&#xff1a;ProcessPoolExecutor 处理异步生成器函数 什么是 ProcessPoolExecutor&#xff1f;为什么要使用 ProcessPoolExecutor 处理异步生成器函数&#xff1f;ProcessPoolExecutor 处理异步生成器函数的基本用法1. 导入模块2. 定义异步生成器函数3. 定义处理函数4…...

elementUI表达自定义校验,校验在v-for中

注意&#xff1a;本帖为公开技术贴&#xff0c;不得用做任何商业用途 <el-form :inline"true" :rules"rules" :model"formData" ref"formRef" class"mt-[20px]"><el-form-item label"选择区域" prop&qu…...

Elasticsearch 在linux部署 及 Docker 集群部署详解案例示范

1. 在 CentOS 上安装和配置 Elasticsearch 在 CentOS 系统下&#xff0c;安装 Elasticsearch 主要分为以下步骤&#xff1a; 1.1 准备工作 在开始安装之前&#xff0c;确保你的系统满足以下基本条件&#xff1a; CentOS 版本要求&#xff1a;推荐使用 CentOS 7 及以上版本。…...

短信验证码发送实现(详细教程)

短信验证码 接口防刷强检验以及缓存验证码阿里云短信服务操作步骤验证码发送实现 好久没发文啦&#xff01;最近也是在工作中遇到我自认为需要记录笔记的需求&#xff0c;本人只求日后回顾有迹可寻&#xff0c;不喜勿喷&#xff01; 废话不多说&#xff0c;直接上代码&#xff…...

P450催化的联芳基偶联反应-文献精读72

Chemoenzymatic Synthesis of Fluorinated Mycocyclosin Enabled by the Engineered Cytochrome P450-Catalyzed Biaryl Coupling Reaction 经工程化的细胞色素P450催化的联芳基偶联反应实现氟代麦环素的化学酶促合成 摘要 将氟原子引入天然产物有望生成具有改良或新颖药理特…...

在不支持AVX的linux上使用PaddleOCR

背景 公司的虚拟机CPU居然不支持avx, 默认的paddlepaddle的cpu版本又需要有支持avx才行,还想用PaddleOCR有啥办法呢? 是否支持avx lscpu | grep avx 支持avx的话,会显示相关信息 如果不支持的话,python运行时导入paddle会报错 怎么办呢 方案一 找公司it,看看虚拟机为什么…...

Python数据分析——Numpy

纯个人python的一个小回忆笔记&#xff0c;当时假期花两天学的python&#xff0c;确实时隔几个月快忘光了&#xff0c;为了应付作业才回忆起来&#xff0c;不涉及太多基础&#xff0c;适用于有一定编程基础的参考回忆。 这一篇笔记来源于下面哔哩哔哩up主的视频&#xff1a; 一…...

JMeter快速入门示例

JMeter是一款开源的性能测试工具&#xff0c;常用于对Web服务和接口进行性能测试。 下载安装 官方下载网址&#xff1a; https://jmeter.apache.org/download_jmeter.cgi也可以到如下地址下载&#xff1a;https://download.csdn.net/download/oscar999/89910834 这里下载Wi…...

【333基于Java Web的考编论坛网站的设计与实现

毕 业 设 计&#xff08;论 文&#xff09; 考编论坛网站设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计…...

计算机网络关键名词中英对照

物理层 IMP - Interface Message Processor - 接口信息处理机 MODEM - Modulator-Demodulator - 调制解调器 LAN - Local Area Network - 局域网 FDM - Frequency Division Multiplexing - 频分复用 TDM - Time Division Multiplexing - 时分复用 STDM - Statistical Time…...

二叉树的学习

除了根节点外的其他节点只有一个直接前驱,有多个直接前驱的逻辑结构叫做图 任何一个树都可以看成是一个根节点和若干个不相交的子树构成的; 构建思维导图时使用树形结构 题目中给出AB是堂兄弟节点说明他们处在同一层 描述两节点之间的路径是从上到下的,同层没有路径,一条边记录…...

免费开源的医疗信息提取系统:提升超声波影像的诊断价值

一、系统概述 思通数科推出的医疗信息精准抽取系统&#xff0c;致力于解决当前医疗行业面临的信息碎片化和数据管理难题。传统医疗过程中&#xff0c;超声波影像数据与诊断报告之间的脱节&#xff0c;往往导致信息无法有效整合&#xff0c;影响医生的诊断效率与准确性。我们的…...

Bash 中的 ${} 和 $() 有什么区别 ?

Bash (Bourne-Again SHell) 是一种流行的 Unix SHell&#xff0c;用于编写脚本。如果您使用 Bash 脚本&#xff0c;那么了解不同的语法元素对于提高脚本的效率和避免错误是很重要的。 在本文中&#xff0c;我们将解释 Bash 中 ${} 和 $() 语法之间的区别&#xff0c;并向您展示…...

SPSS、R语言因子分析FA、主成分分析PCA对居民消费结构数据可视化分析

全文链接&#xff1a;https://tecdat.cn/?p37952 分析师&#xff1a;Ting Mei 在经济发展的大背景下&#xff0c;居民消费结构至关重要。本文围绕居民消费结构展开深入研究&#xff0c;运用 SPSS25.0 和 R 语言&#xff0c;以因子分析法和主成分分析法对东北三省居民消费价格指…...

高级SQL技巧掌握

高级SQL技巧掌握 在数据驱动的时代,掌握SQL不仅仅是为了解决具体问题,它更像是一把钥匙,帮助你打开数据分析的大门。你准备好提升你的SQL技能了吗?在这篇文章中,我们将一起探索十个必备的高级SQL查询技巧,这些技巧将帮助你更有效率地进行数据处理与分析。 1. 常见表表达…...

数组实例之三子棋的实现(C语言)

目录 前言 一、三子棋实现的逻辑 二、三子棋的实现 2.1文件的创建添加 2.2 test文件基本逻辑 2.2.1菜单的实现 2.2.2菜单的选择 2.2.3game函数棋盘的实现 2.3game.c文件的编写 2.3.1初始化函数的模块 2.3.2棋盘打印的模块 2.3.3实现棋盘界面的打印 2.3.4实现玩家下…...

【Linux驱动开发】设备树节点驱动开发入门

【Linux驱动开发】设备树节点驱动开发入门 文章目录 设备树文件设备树文件驱动开发附录&#xff1a;嵌入式Linux驱动开发基本步骤开发环境驱动文件编译驱动安装驱动自动创建设备节点文件 驱动开发驱动设备号地址映射&#xff0c;虚拟内存和硬件内存地址字符驱动旧字符驱动新字…...

C++——string的模拟实现(下)

目录 成员函数 3.4 修改操作 (3)insert()函数 (4)pop_back()函数 (5)erase()函数 (6)swap()函数 3.5 查找操作 (1)find()函数 (2)substr()函数 3.6 重载函数 (1)operator赋值函数 (2)其他比较函数 (3)流插入和流提取 完整代码 结束语 第一篇链接&#xff1a;C——…...

面试 Java 基础八股文十问十答第二十九期

面试 Java 基础八股文十问十答第二十九期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;类加载过程 类加载…...

ROS 之 rosdep 进阶技巧:高效管理workspace依赖关系

1. 从单package到workspace&#xff1a;为什么需要rosdep进阶技巧 刚开始接触ROS的时候&#xff0c;我和大多数开发者一样&#xff0c;每次遇到依赖问题都是手动安装。比如看到Could not find a package configuration file provided by "xxx"这样的错误&#xff0c;…...

把 SAP Fiori 远程系统配置讲透:SM59、System Alias、sap-system 与多后端路由实践

在 SAP Fiori launchpad 的真实项目里,用户登录的系统,和应用实际运行、实际取数的系统,往往并不是同一台机器。很多团队在做 PoC 的时候,一切看起来都很顺;一旦进入企业级部署,前端服务器、Gateway、ECC、S/4HANA、SRM 甚至多个区域性后端同时出现,导航失败、取数跑偏、…...

ComfyUI模型管理终极指南:从零基础到高效工作流的完整教程

ComfyUI模型管理终极指南&#xff1a;从零基础到高效工作流的完整教程 【免费下载链接】ComfyUI 最强大且模块化的具有图形/节点界面的稳定扩散GUI。 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI ComfyUI作为最强大且模块化的AI图像生成工具&#xff0c;…...

解决数字记忆碎片化的创新方案:GetQzonehistory让社交数据成为可触摸的时光胶囊

解决数字记忆碎片化的创新方案&#xff1a;GetQzonehistory让社交数据成为可触摸的时光胶囊 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 副标题&#xff1a;重构QQ空间回忆的3大突破…...

别再死记硬背了!用‘神经元工作原理’理解你背单词为什么总忘

别再死记硬背了&#xff01;用‘神经元工作原理’理解你背单词为什么总忘 背单词时总是前脚记后脚忘&#xff1f;这其实不是记忆力的问题&#xff0c;而是方法的问题。我们的大脑就像一台精密的生物计算机&#xff0c;而记忆的形成和巩固遵循着特定的神经科学规律。理解这些规…...

Python 3.14 JIT vs PyPy 8.3 vs GraalPython:金融风控场景下GC暂停时间对比实测(数据全部脱敏)

第一章&#xff1a;Python 3.14 JIT vs PyPy 8.3 vs GraalPython&#xff1a;金融风控场景下GC暂停时间对比实测&#xff08;数据全部脱敏&#xff09;为评估新一代Python运行时在低延迟金融风控场景中的实际表现&#xff0c;我们在统一硬件环境&#xff08;Intel Xeon Platinu…...

告别繁琐!3步解锁教育资源获取新方式,效率提升10倍的高效工具

告别繁琐&#xff01;3步解锁教育资源获取新方式&#xff0c;效率提升10倍的高效工具 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具 项目地址: https://gitcode.com/GitHub_Trending/tc/tchMaterial-parser 在数字化学习与教学资源管理…...

如何将Serge与LangChain集成:打造企业级AI应用的终极指南

如何将Serge与LangChain集成&#xff1a;打造企业级AI应用的终极指南 【免费下载链接】serge A web interface for chatting with Alpaca through llama.cpp. Fully dockerized, with an easy to use API. 项目地址: https://gitcode.com/gh_mirrors/se/serge Serge是一…...

电脑风扇智能控制完全指南:从噪音烦恼到散热优化

电脑风扇智能控制完全指南&#xff1a;从噪音烦恼到散热优化 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanC…...

Cloudflare邮件路由的隐藏玩法:一个域名无限别名,管理不同网站注册,再也不怕信息泄露

Cloudflare邮件路由的隐私管理艺术&#xff1a;用无限别名打造数字身份防火墙 在个人信息如同裸奔的数字时代&#xff0c;每次网站注册都是一次隐私赌博。你是否经历过这样的困扰&#xff1f;某个小众论坛注册三个月后&#xff0c;主邮箱突然涌入大量赌博邮件&#xff1b;双十一…...