C++STL-vector的使用
vector的定义方式
方式1:构造某一个类型的空容器
vector<int> v1;//构造一个int类型的空容器
方式2:构造一个含有n个val的某类型容器
vector<int> v2(10, 2);//构造一个含有10个2的int类型的容器
方式3:拷贝构造某类型容器
vector<int> v3(v2);//v2容器的复制品
方式4:使用迭代器拷贝构造一段内容
vector<int> v4(v2.begin(), v2.end());//使用迭代器拷贝构造v2的一段内容
还可以拷贝其他容器
string s("hello");
vector<char> v5(s.begin(), s.end());
vector的空间问题
size和capacity
size获取容器中有效元素的个数,capacity获取容器最大容量
#include<vector>
#include<iostream>
using namespace std;int main()
{vector<int> v(10, 2);cout << v.size() << endl;//10cout << v.capacity() << endl;//10return 0;
}
reserve和resize
reserve改变容量,resize改变元素个数
reserve规则:
1.所给值大于capacity时,capacity变成该值2.所给值小于capacity时,什么也不做
resize规则:
1.所给值大于size时,size扩大到该值,扩大的元素默认为0
2..所给值小于size时,size缩小到该值
int main()
{vector<int> v(10, 2);cout << v.size() << endl;//10cout << v.capacity() << endl;//10v.reserve(20);//改变容器的capacity为20cout << v.size() << endl;//10cout << v.capacity() << endl;//20v.resize(15);cout << v.size() << endl;//15cout << v.capacity() << endl;//20return 0;
}
empty
判断当前容器是否为空
int main()
{vector<int> v1;vector<int> v2(10,2);cout << v1.empty() << endl;//1表示空cout << v2.empty() << endl;//0表示非空return 0;
}
vector的迭代器使用
begin和end
begin函数得到第一个元素的位置,end函数得到最后一个元素的后一个位置
正向迭代器遍历容器
int main()
{vector<int> v(10, 2);vector<int>::iterator it = v.begin();while (it != v.end()){cout << *it << " ";it++;}cout << endl;return 0;
}
rbegin和rend
rbegin获取最后一个元素的位置,rend获取容器第一个元素前一个的位置
反向迭代器遍历容器
int main()
{vector<int> v(10, 2);vector<int>::reverse_iterator rit = v.rbegin();while (rit != v.rend()){cout << *rit << " ";rit++;}cout << endl;return 0;
}
vector的增删查改
push_back(尾插)和pop_back(尾删)
int main()
{vector<int> v;v.push_back(1);v.push_back(2);v.pop_back();v.pop_back();return 0;
}
insert和erase
insert函数可以在所给位置插入一个或多个元素,erase可以删除所在位置的元素,也可以删除区间内的所有元素(左闭右开)
int main()
{vector<int> v;v.push_back(1);v.push_back(2);v.insert(v.begin(), 0);//容器开头插个0v.insert(v.begin(), 5, 1);//容器开头插5个1v.erase(v.begin());//删除容器开头位置元素v.erase(v.begin(), v.begin()+1);//左闭右开的删cout << v.size();//6return 0;
}
find
在某一特定值位置进行修改要用到find
1.find函数有三个参数,前两个参数确定一个区间(左闭右开),第三个参数确定所选值
2.在区间找到匹配的元素返回它的迭代器,没找到则返回第二个参数
int main()
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);vector<int>::iterator pos = find(v.begin(), v.end(), 2);//获取值为2元素的迭代器v.insert(pos,10);//在2的位置插入10pos = find(v.begin(), v.end(), 3);//获取值为3元素的迭代器v.erase(pos);//删除3return 0;
}
swap
int main()
{vector<int> v1(10, 1);vector<int> v2(10, 2);v1.swap(v2);return 0;
}
元素访问
vector中对[ ]进行了重载,"下标+[ ]"进行元素访问
int main()
{vector<int> v(10, 1);//使用下标的方式便利容器for (size_t i = 0; i < v.size(); i++){cout << v[i] << " ";}cout << endl;return 0;
}
范围for对vector容器进行遍历(支持迭代器就会支持范围for)
int main()
{vector<int> v(10, 1);for (auto e : v){cout << e << " ";}cout << endl;return 0;
}
相关文章:
C++STL-vector的使用
vector的定义方式 方式1:构造某一个类型的空容器 vector<int> v1;//构造一个int类型的空容器 方式2:构造一个含有n个val的某类型容器 vector<int> v2(10, 2);//构造一个含有10个2的int类型的容器 方式3:拷贝构造某类型容器 …...
图简记。。
模仿: algorithm-journey/src/class059/Code01_CreateGraph.java at main algorithmzuo/algorithm-journey Code01_CreateGraph C语言: #include <stdio.h> #include <stdlib.h> #include <string.h>#define MAXN 11 #define MAX…...

pytorch基本运算-范数
引言 前序学习进程中,已经对pytorch基本运算有了详细探索,文章链接有: 基本运算 广播失效 乘除法和幂运算 hadamard积、点积和矩阵乘法 上述计算都是以pytorch张量为运算元素,这些张量基本上也集中在一维向量和二维矩阵&#x…...
uefi协议设计目的
在EDK2的术语体系中,GUID定义的是协议的标识符,而具体实现的函数集合称为协议的实现。它们是同一协议的不同抽象层次,以下是详细解释: 1. 协议(Protocol)的两层含义 (1) 协议规范(接口定义&am…...
springcloud openfeign 偶现 Caused by: java.net.UnknownHostException
背景 最近查看日志发现某服务偶现Caused by: java.net.UnknownHostException 同时查看eureka的access.log 出现如下异常 10.xxx.xxx.xxx - - [27/May/2025:23:57:29 0800] “PUT /eureka/apps/{appName}/{host}:xxx-job:8082?statusUP&lastDirtyTimestamp1748351637173 H…...

Transformer实战——词嵌入技术详解
Transformer实战——词嵌入技术详解 0. 前言1. 词嵌入基础2. 分布式表示3. 静态嵌入3.1 Word2Vec3.2 GloVe 4. 使用 Gensim 构建词嵌入5. 使用 Gensim 探索嵌入空间6. 动态嵌入小结系列链接 0. 前言 在本节中,我们首先介绍词嵌入的概念,然后介绍两种实现…...

[pdf、epub]300道《软件方法》强化自测题业务建模需求分析共257页(202505更新)
DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 在本账号CSDN资源下载,或者访问链接: http://www.umlchina.com/url/quizad.html 如果需要提取码:umlc 文件夹中的“300道软件方法强化自测题2025…...

Vue3入门指南:从零到精通的快速上手
齐爷学vue3 一、Vue3入门 vite:前端构架工具,构建速度快于webpack。轻量快速、对TS,JSX,CSS开箱即用、按需编译。 创建Vue3工程 1.在想要创建Vue3的位置打开cmd,执行如下命令。 npm create vuelatest 2.功能只选择…...
前端常见错误
1. TypeError: Cannot read property xxx of undefined 错误原因:尝试访问一个 undefined 或 null 对象的属性 / 方法。 示例代码: const user { name: "John" }; console.log(user.address.street); // user.address 为 undefined 解决方…...

吴恩达MCP课程(5):mcp_chatbot_prompt_resource.py
前提条件: 1、吴恩达MCP课程(5):research_server_prompt_resource.py 2、server_config_prompt_resource.json文件 {"mcpServers": {"filesystem": {"command": "npx","args"…...
关于DDOS
DDOS是一门没什么技术含量的东西,其本质而言是通过大量数据报文,发送到目标受害主机IP地址上,导致目标主机无法继续服务(俗称:拒绝服务) DDOS灰产人期望达成的预期目标,几乎都是只要把对面打到 …...
云服务器自带的防御可靠吗
最近有不少朋友问我,云服务器自带的防御靠不靠谱。就拿大厂的云服务器来说,很多都自带5G防御。但这5G防御能力,在如今的网络攻击环境下,真的有些不够看。 如今,网络攻击手段层出不穷,攻击流量更是越来越大。…...
Java详解LeetCode 热题 100(27):LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:迭代法(哨兵节点)3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:递归法4.…...

设计模式——抽象工厂设计模式(创建型)
摘要 抽象工厂设计模式是一种创建型设计模式,旨在提供一个接口,用于创建一系列相关或依赖的对象,无需指定具体类。它通过抽象工厂、具体工厂、抽象产品和具体产品等组件构建,相比工厂方法模式,能创建一个产品族。该模…...

基于LocalAI与cpolar技术协同的本地化AI模型部署与远程访问方案解析
文章目录 前言1. Docker部署2. 简单使用演示3. 安装cpolar内网穿透4. 配置公网地址5. 配置固定公网地址前言 各位极客朋友们!今天要向大家推荐一套创新性的本地部署方案——LocalAI技术架构。这款开源工具包能够将普通配置的笔记本电脑转化为具备强大算力的AI工作站,轻松实现…...
Linux 云服务器部署 Flask 项目(含后台运行与 systemd 开机自启)
一、准备工作 在开始正式部署之前,请确认以下前提条件已经准备好: 你有一台运行 Linux 系统(CentOS 或 Ubuntu)的服务器; 服务器有公网 IP,本例中使用:111.229.204.102; 你拥有该服务器的管理员权限(可以使用 sudo); 打算使用 Flask 构建一个简单的 Web 接口; 服务…...

霍尔效应传感器的革新突破:铟化铟晶体与结构演进驱动汽车点火系统升级
一、半导体材料革新:铟化铟晶体的电压放大机制 铟化铟(InSb)晶体因其独特的能带结构,成为提升霍尔电压的关键材料。相较于传统硅基材料,其载流子迁移率高出3-5倍,在相同磁场强度下可显著放大霍尔电压。其作…...

无法运用pytorch环境、改环境路径、隔离环境
一.未建虚拟环境时 1.创建新项目后,直接运行是这样的。 2.设置中Virtualenv找不到pytorch环境?因为此时没有创建新虚拟环境。 3.选择conda环境(全局环境)时,是可以下载环境的。 运行结果如下: 是全局环境…...

从0开始学vue:pnpm怎么安装
一、什么是 pnpm? pnpm(Performant npm)是新一代 JavaScript 包管理器,优势包括: 节省磁盘空间:通过硬链接和符号链接实现高效存储安装速度更快:比 npm/yarn 快 2-3 倍内置工作区支持…...
React从基础入门到高级实战:React 实战项目 - 项目二:电商平台前端
React 实战项目:电商平台前端 欢迎来到本 React 开发教程专栏的第 27 篇!在前 26 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件、状态、路由、性能优化和设计模式等核心知识。这一次,我们将通过一…...

Python 网络编程 -- WebSocket编程
作者主要是为了用python构建实时网络通信程序。 概念性的东西越简单越好理解,因此,下面我从晚上摘抄的概念 我的理解。 什么是网络通信? 更确切地说,网络通信是两台计算机上的两个进程之间的通信。比如,浏览器进程和新浪服务器上的某个Web服务进程在通…...
微信小程序动态组件加载的应用场景与实现方式
动态组件加载的应用场景与实现方式 你提供的代码展示了微信小程序中动态加载组件的方法,但这种方式在实际开发中需要注意使用场景和实现细节。下面我来详细说明如何应用: 应用场景 按需加载组件:在某些条件满足时才加载组件动态配置组件&a…...
人工智能在智能教育中的创新应用与未来趋势
随着人工智能(AI)技术的飞速发展,教育领域正经历着一场深刻的变革。智能教育通过引入AI、物联网(IoT)、大数据和云计算等前沿技术,正在实现教育的个性化、智能化和高效化。本文将探讨人工智能在智能教育中的…...

边缘计算应用实践心得
当数据中心的光纤开始承载不了爆炸式增长的物联网数据流时,边缘计算就像毛细血管般渗透进现代数字肌理的末梢。这种将算力下沉到数据源头的技术范式,本质上是对传统云计算中心化架构的叛逆与补充——在智能制造车间里,实时质检算法直接在工业…...

EXCEL如何快速批量给两字姓名中间加空格
EXCEL如何快速批量给姓名中间加空格 优点:不会导致排版混乱 缺点:无法输出在原有单元格上,若需要保留原始数据,可将公式结果复制后“选择性粘贴为值” 使用场景:在EXCEL中想要快速批量给两字姓名中间加入空格使姓名对…...
OD 算法题 B卷【BOSS的收入】
文章目录 BOSS的收入 BOSS的收入 一个公司只有一个boss,其有若干一级分销,一级分销又有若干二级分销,每个分销只有唯一的上级;每个月,下级分销需要将自己的总收入(自己的下级上交的)࿰…...
Linux共享内存原理及系统调用分析
shmget 是 System V 共享内存的核心系统调用之一,其权限位(shmflg 参数)决定了共享内存段的访问控制和创建行为。以下是权限位的详细解析: 权限位的组成 shmflg 参数由两部分组成: 权限标志(低 9 位&…...

Jenkins | Linux环境部署Jenkins与部署java项目
1. 部署jenkins 1.1 下载war包 依赖环境 jdk 11 下载地址: https://www.jenkins.io/ 依赖环境 1.2 启动服务 启动命令 需要注意使用jdk11以上的版本 直接启动 # httpPort 指定端口 #-Xms2048m -Xmx4096m 指定java 堆内存初始大小 与最大大小 /usr/java/jdk17/bin/java…...

react私有样式处理
react私有样式处理 Nav.jsx Menu.jsx vue中通过scoped来实现样式私有化。加上scoped,就属于当前组件的私有样式。 给视图中的元素都加了一个属性data-v-xxx,然后给这些样式都加上属性选择器。(deep就是不加属性也不加属性选择器) …...

UDP/TCP协议全解
目录 一. UDP协议 1.UDP协议概念 2.UDP数据报格式 3.UDP协议差错控制 二. TCP协议 1.TCP协议概念 2.三次握手与四次挥手 3.TCP报文段格式(重点) 4.流量控制 5.拥塞控制 一. UDP协议 1.UDP协议概念 当应用层的进程1要向进程2传输报文ÿ…...