c++学习第十四讲---STL常用容器---vector容器
vector容器:
1.vector基本概念:
vector功能与数组类似,与数组不同的是,vector可以动态扩展。
2.vector构造函数:
vector<T> v; //默认构造函数,创建数据类型T的容器
vector(v.begin(), v.end()); //将v[begin(), end()) 区间中的元素拷贝给本身
vector(n, elem); //将n个elem拷贝给本身
vector(const vector &vec); //拷贝构造函数
vector<int> v1;vector<int> v2(v1.begin(), v1.end());vector<char> v3(10, 'a');vector<int> v4(v1);
3.vector赋值操作:
vector& operator=(const vector& vec); //等号重载
assign(beg, end); //将beg, end之间的数据拷贝赋值给本身
assign(n, elem); //将n个elem拷贝赋值给本身
vector<int> v2;v2 = v1;vector<int> v3;v3.assign(v1.begin(), v1.end());vector<int> v4;v4.assign(10, 100);
4.vector容量和大小:
empty( ); //判断容器是否为空
capacity( ); //容器的容量
size( ); //容器中元素的个数
resize(int num); //重新指定容器的长度为num,容器变长,以默认值填充新位置,容器变 //短,超出的元素被删除
resize(int num, elem); //重新指定容器的长度为num,容器变长,以elem填充新位置,容器变短, //超出的元素被删除
void test03()
{vector<int>v1;for (int i = 0; i < 10; i++){v1.push_back(i);}if (v1.empty())//为真,代表容器为空{cout << "v1为空" << endl;}else{cout << "v1不为空" << endl;cout << "v1容量为:" << v1.capacity() << endl;cout << "v1大小为:" << v1.size() << endl;}PrintVector(v1);//重新指定大小v1.resize(15);PrintVector(v1);//默认值为0 v1.resize(5);PrintVector(v1);//后面的被删掉了
}

5.vector插入和删除:

void test04()
{vector<int>v1;v1.push_back(10);v1.push_back(20);v1.push_back(30);PrintVector(v1);//10 20 30v1.pop_back();//10 20 尾部删除v1.insert(v1.begin(), 100);//100 10 20 指定位置插入v1.insert(v1.begin(), 2, 50);//50 50 100 10 20 指定位置插入v1.erase(v1.begin());//50 100 10 20 指定位置删除v1.erase(v1.begin(), v1.end()); //指定范围删除v1.clear();//清空所有数据
}
6.vector数据存取:
at(int idx); //返回idx所指的数据
operator[ ]; //下标重载,返回idx所指的数据
front( ); //返回第一个数据
back( ); //返回最后一个数据
void test05()
{vector<int>v1;for (int i = 0; i < 10; i++){v1.push_back(i);}cout << v1.front() << " " << v1.at(1) << " " << v1[2] << " " << v1.back() << endl;//0 1 2 9
}
7.vector互换容器:
功能:实现两个容器内元素的互换。
swap(vec); //将vec与本身的元素互换
v1.swap(v2);//交换两个容器的元素
用途:巧用swap可以收缩内存空间:
resize缩小空间后,只是将size减小了,capacity并没有减小,造成了空间浪费。
解决方法:
vector<int>(v1).swap(v1);
原理:vector<int>(v1) --- 匿名对象,按照v的size开辟大小
.swap(v1) --- 将匿名对象和v1交换
8.vector预留空间:
功能:减少vector在动态扩展内存时的扩展次数。
reserve(int len); //容器预留len个元素长度,预留位置不初始化,元素不可访问。
void test07()
{vector<int>v;v.reserve(100000);int num = 0;int* p = NULL;for (int i = 0; i < 100000; i++){v.push_back(i);//查看动态扩展的次数if (p != &v[0]){p = &v[0];num++;}}cout << num << endl;//1
}
相关文章:
c++学习第十四讲---STL常用容器---vector容器
vector容器: 1.vector基本概念: vector功能与数组类似,与数组不同的是,vector可以动态扩展。 2.vector构造函数: vector<T> v; //默认构造函数,创建数据类型T的容器 ve…...
数据结构-内部排序
简介 排序(Sorting):将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列 排序算法分为内部排序和外部排序 内部排序:在排序期间数据对象全部存放在内存的排序 外部排序&am…...
Qt加载网页崩溃 ASSERT:“m_adapterClient“ in file ...
1、软件启动后加载网页无异常,点击按钮,加载新网页时崩溃 崩溃代码: QWebEngineView *createWindow(QWebEnginePage::WebWindowType type) { Q_UNUSED(type); return this; } 2、原因 Qt只是调用谷歌的浏览器引擎ÿ…...
合约短线高胜率策略-扭转乾坤指标使用说明
扭转乾坤指标使用说明 行情判断 双绿线 多趋势双红线 空趋势大绿线 小红线 多震荡大红线 小绿线 空震荡 进场条件 趋势行情进场 多趋势 多信号 底金叉 做多空趋势 空信号 顶死叉 做空 震荡行情进场 多震荡 多信号 底金叉 做多多震荡 空信号 顶死叉 做空空…...
DAY37:贪心算法738
今天写了一道题目,顺便看了一个很好的总结,这篇博客可以跳过。 Leetcode:738 单调递增的数字 因为最大的数字是9,当出现后面位数的数字比前面位数的数字小的时候,就把后面的数字都变成9,前面那个数字--。…...
计算机中的缓存与内存
在现代计算机系统中,缓存和内存扮演着至关重要的角色,它们共同协作以实现高性能和高效率的数据处理。本文将深入探讨缓存和内存的概念、功能以及它们在计算机系统中的作用。 缓存与内存:概念与功能 1. 内存(RAM)&…...
2.1总结
还是一样水更一天,就随便做了几个题,有一个周期有点长,后面更一篇长的 随手刷的一道水题,就不往今天的行程单添了 问题:最大公约数 题解:题目太水了,就是求三个数,其中两组的最大公…...
探索Pyecharts:绘制多彩日历图的艺术与技巧
Pyecharts绘制多种炫酷日历图参数说明代码实战 导言 在数据可视化领域,日历图是一种直观展示时间和数据关系的方式。Pyecharts是一个基于Echarts的Python库,可以方便地绘制各种图表,包括炫酷的日历图。本篇博客将介绍Pyecharts中绘制多种炫…...
响应标头Allow-Headers和Expose-Headers的区别和用法
Access-Control-Allow-Headers和Access-Control-Expose-Headers,简单的说,这两者都是前端和后端之间通过header传递数据的,主要的区别就是方向。 Access-Control-Allow-Headers 举个例子,如果我们前端向后端发起请求,…...
<网络安全>《13 上网行为管理》
1 概念 上网行为管理是指帮助互联网用户控制和管理对互联网的使用。其包括对网页访问过滤、上网隐私保护、网络应用控制、带宽流量管理、信息收发审计、用户行为分析等。 随着计算机、宽带技术的迅速发展,网络办公日益流行,互联网已经成为人们工作、生活…...
安全通道堵塞识别摄像机
当建筑物的安全通道发生堵塞时,可能会给人员疏散和救援带来重大隐患。为了及时识别和解决安全通道堵塞问题,专门设计了安全通道堵塞识别摄像机,它具有监测、识别和报警功能,可在第一时间发现通道堵塞情况。这种摄像机通常安装在通…...
2022 年全国职业院校技能大赛高职组云计算赛项试卷
【赛程名称】云计算赛项第二场-容器云 说明: 完成本任务需要两台安装了 CentOS7.9 操作系统的云主机: master 和 node。Chinaskill_Cloud_PaaS.iso 镜像包中有本次容器云部署所需的所有文件,运维所需的文件见附件。 某公司技术部产品开发上线…...
Android开发中,Vue 3处理回退按键事件
vue3有一些变化,按照网上有些文章的方法,发现行不通,通过一段时间的打印、尝试后,发现以下方法可行。 第一步)首先定义一个处理回退事件的js函数,一定是vue.methods中的函数,否则找不到this&am…...
three.js CSS3DRenderer、CSS3DSprite渲染HTML标签
有空的老铁关注一下我的抖音: 效果: <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red;position: relative;"></div><…...
【BBF系列协议】TR369管理平台软件设计
一、介绍 旨在促进CPE和IoT的多供应商管理平台的发展。遵循TR-369协议的任何设备都可以进行管理。主要目标是促进并统一设备管理,为最终用户和服务提供商带来无数好处,减少当前技术所需的要求:设备互连、数据收集、速度、可用性等等。 二、 TR-069 ---> TR-369 物联网…...
微信小程序 仿微信聊天界面
1. 需求效果图 2. 方案 为实现这样的效果,首先要解决两个问题: 2.1.点击输入框弹出软键盘后,将已有的少许聊天内容弹出,导致看不到的问题 点击输入框弹出软键盘后,将已有的少许聊天内容弹出,导致看不到的问…...
中国社会科学院大学-新加坡社科大学 招生简章
Singapore University of Social Sciences--University of Chinese Academy of Social Sciences Doctor of Business Administration (DBA) Programme in Global Strategy and Leadership 一、项目简介 全球经济正在经历由科技进步和创新、政治和人口剧烈变化所带来的巨大的不…...
js中继承的详解(一文读懂)
文章目录 一、是什么二、实现方式原型链继承构造函数继承组合继承原型式继承寄生式继承寄生组合式继承 三、总结参考文献 一、是什么 继承(inheritance)是面向对象软件技术当中的一个概念。 如果一个类别B“继承自”另一个类别A,就把这个B称…...
Android studio使用svg矢量图
https://www.iconfont.cn/ https://www.jyshare.com/more/svgeditor/ https://editor.method.ac/ https://inloop.github.io/svg2android/ Pattern Monster - SVG 图案生成器 Android studio使用svg矢量图自适应不同的分辨率, svg矢量图绘制以及转换为And…...
《Access Path Selectionin a Relational Database Management System》论文笔记
以下是根据论文归纳出的一些查询优化器公式和知识点,有没有用不知道,先码起来。 SQL执行优化过程 处理SQL语句是从解析用户输入的SQL语句开始,经过一系列优化过程,最终生成机器代码并执行的过程。这个过程涉及到多个复杂的步骤&…...
IndexTTS-2-LLM语音生成延迟高?CPU算力优化实战指南
IndexTTS-2-LLM语音生成延迟高?CPU算力优化实战指南 1. 问题背景与挑战 IndexTTS-2-LLM作为一款优秀的智能语音合成系统,在语音质量和自然度方面表现出色。但在CPU环境下运行时,用户经常会遇到语音生成延迟较高的问题,影响使用体…...
Phi-3-vision-128k-instruct黑马点评项目AI升级:实现菜品图片智能识别与推荐
Phi-3-vision-128k-instruct黑马点评项目AI升级:实现菜品图片智能识别与推荐 1. 引言:餐饮应用的智能化痛点 在餐饮行业数字化浪潮中,"黑马点评"作为一款广受欢迎的美食点评应用,面临着用户需求升级的挑战。传统模式下…...
3个终极窗口隐藏技巧:如何用Boss-Key打造你的数字隐身衣
3个终极窗口隐藏技巧:如何用Boss-Key打造你的数字隐身衣 【免费下载链接】Boss-Key 老板来了?快用Boss-Key老板键一键隐藏静音当前窗口!上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 你有没有经历过这样的…...
Bidili Generator应用场景:电商主图/社交配图/Logo设计一站式生成方案
Bidili Generator应用场景:电商主图/社交配图/Logo设计一站式生成方案 你是不是也遇到过这样的烦恼?做电商,每天要上新几十款商品,每款都得找人设计主图,成本高、周期长;运营社交媒体,天天为找…...
Qwen3-Embedding-4B开箱即用:SGlang部署避坑指南
Qwen3-Embedding-4B开箱即用:SGlang部署避坑指南 1. Qwen3-Embedding-4B简介 Qwen3-Embedding-4B是Qwen系列最新推出的文本嵌入模型,专为语义检索、文本分类等任务优化。作为4B参数量的中型模型,它在效果与效率之间取得了良好平衡ÿ…...
基于Docker与Orthanc构建轻量级医学影像PACS系统实践
1. 为什么选择DockerOrthanc搭建PACS系统 第一次接触医学影像管理系统时,我被传统PACS的复杂部署流程吓到了——需要配置数据库、安装依赖库、调试网络参数,光是环境准备就要花上大半天。直到发现Orthanc这个宝藏工具,配合Docker容器化技术&a…...
3大技巧:如何让旧Mac免费升级到最新macOS系统的完整方案
3大技巧:如何让旧Mac免费升级到最新macOS系统的完整方案 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否有一台2012-2015年的旧款Mac,看着朋…...
Paperxie AI 毕业论文写作,助力大学生高效搞定初稿
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/ai/dissertationhttps://www.paperxie.cn/ai/dissertation 在本科毕业季的朋友圈里,总能刷到这样的动态:凌晨三点的台灯下,对着空白文档发…...
解密开源启动器启动故障:从报错窗口到系统内核的深度排查
解密开源启动器启动故障:从报错窗口到系统内核的深度排查 【免费下载链接】PCL 项目地址: https://gitcode.com/gh_mirrors/pc/PCL 开源启动器故障排除是开发者和用户在使用过程中经常遇到的问题。当你点击启动按钮,却被系统弹出的"操作被拒…...
Qwen3.5-4B模型Python零基础入门:从环境搭建到第一个AI对话程序
Qwen3.5-4B模型Python零基础入门:从环境搭建到第一个AI对话程序 1. 前言:为什么选择Qwen3.5-4B入门AI开发 如果你对AI感兴趣但不知道从何开始,这篇教程就是为你准备的。Qwen3.5-4B是一个非常适合入门的中文大语言模型,它体积适中…...
