vector 是 C++ 标准库中的一个动态数组类,它可以在运行时自动调整大小,非常适合用于处理大小不确定的集合。下面是 vector 的常见用法示例,帮助你更好地理解如何使用它。

注意:所有用数组完成的任务都可以用vector完成。

1. 引入头文件

首先,你需要引入 vector 的头文件:

#include <vector>

2. 定义和初始化 vector

vector 可以通过几种方式进行初始化:

#include <iostream>
#include <vector>
using namespace std;int main() {// 1. 默认构造一个空的 vectorvector<int> v1; // 2. 使用初始化列表初始化vector<int> v2 = {1, 2, 3, 4};// 3. 指定大小并初始化所有元素为0vector<int> v3(5, 0);  // 长度为5,所有元素初始化为0// 4. 使用其他 vector 初始化vector<int> v4(v2);  // 复制v2return 0;
}

3. 访问元素

vector 允许通过下标或迭代器访问元素,类似于数组。

cout << v2[0] << endl;  // 访问第一个元素
cout << v2.at(1) << endl;  // 使用 at() 方法(有越界检查)

4. 增加元素

使用 push_back() 可以向 vector 添加元素到末尾。

vector<int> v = {1, 2, 3};
v.push_back(4);  // 向末尾添加元素 4
cout << v[3] << endl;  // 输出 4

5. 删除元素

pop_back() 用于删除 vector 中的最后一个元素。

v.pop_back(); // 删除最后一个元素

如果你需要删除 vector 中的某个特定位置的元素,可以使用 erase() 方法:

v.erase(v.begin() + 1); // 删除索引1的元素   注意:索引=下标,索引1为第二个元素

6. 调整大小

resize() 方法用于调整 vector 的大小,可以缩小或扩展。

v.resize(5); // 将大小调整为 5(扩展或截断)

7. 插入元素

insert() 方法可以在 vector 的任意位置插入元素。

v.insert(v.begin() + 1, 99); // 在索引1的位置插入 99

8. 遍历元素

vector 支持使用迭代器进行遍历:

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

或者使用范围 for 循环(C++11 起支持):

for (int x : v) {cout << x << " ";
}
cout << endl;

9. 获取大小

你可以使用 size() 方法获取 vector 中元素的数量:

cout << "Size: " << v.size() << endl;

10. 检查是否为空

使用 empty() 方法可以检查 vector 是否为空。

if (v.empty()) {cout << "Vector is empty" << endl;
} else {cout << "Vector is not empty" << endl;
}

11. 容量管理

capacity() 方法返回 vector 当前的容量(实际分配的内存大小),可能大于实际的元素个数。你可以使用 reserve() 来增加 vector 的容量,避免多次扩容导致性能开销。

cout << "Capacity: " << v.capacity() << endl;
v.reserve(20);  // 预先为 20 个元素分配空间

12. 清空元素

如果你想删除所有元素,可以使用 clear() 方法:

v.clear(); // 删除所有元素

完整示例

#include <iostream>
#include <vector>
using namespace std;int main() {vector<int> v = {1, 2, 3};// 向 vector 中添加元素v.push_back(4);v.push_back(5);// 遍历输出元素for (int x : v) {cout << x << " ";  // 输出 1 2 3 4 5}cout << endl;// 删除最后一个元素v.pop_back();// 插入元素v.insert(v.begin() + 1, 99);  // 在索引1的位置插入 99// 输出修改后的 vectorfor (int x : v) {cout << x << " ";  // 输出 1 99 2 3 4}cout << endl;// 获取大小和容量cout << "Size: " << v.size() << endl;  // 输出 5cout << "Capacity: " << v.capacity() << endl;  // 输出当前容量// 清空 vectorv.clear();cout << "Size after clear: " << v.size() << endl;  // 输出 0return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/88348.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88348.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/88348.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI时代工具:AIGC导航——AI工具集合

大家好!AIGC导航是一个汇集多种AIGC工具的平台&#xff0c;提供了丰富的工具和资源。 工具功能​: 该平台整合了多样的AIGC工具&#xff0c;涵盖了绘画创作、写作辅助以及视频制作等多个领域。绘画工具能够生成高质量的图像作品&#xff1b;写作工具支持从构思到润色的全流程写…

java-SpringBoot框架开发计算器网页端编程练习项目【web版】

今天分享一个使用springboot 写一个 前后端不分离的项目&#xff0c;网页计算器&#xff0c;来熟悉springboot框架的使用。 java版本&#xff1a;8。 springboot&#xff1a;2.6.13 使用的技术是&#xff1a; Java Spring Boot Thymeleaf HTML/CSS/JS 构建的 Web 端简约按钮…

linux操作系统的软件架构分析

一、linux操作系统的层次结构 1.内核的主要功能 1&#xff09;进程管理 2&#xff09;内存管理 3&#xff09;文件系统 4&#xff09;进程间通信、I/O系统、网络通信协议等 2.系统程序 1&#xff09;系统接口函数库&#xff0c;比如libc 2)shell程序 3&#xff09;编译器、编辑…

浅谈Java对象在内存中的存储形式

我们知道计算机以二进制的方式存储数据&#xff0c;以 64 位虚拟机为例&#xff0c;Java 对象在内存中的存储形式为&#xff1a; 开头是 8 个字节的 markword&#xff0c;用于标记对象的状态。&#xff08;也就是一个 long 型数据的大小。不妨记作对象头里有一个长长的 markwo…

Android 开发问题:Wrong argument type for formatting argument ‘#2‘ in info_message

<string name"info_message">name: %1$s, age: %2$d</string>String str getString(R.string.info_message, "zs");在 Android 开发中&#xff0c;上述代码&#xff0c;出现如下警告信息 Wrong argument type for formatting argument #2 in…

Vue+spring boot前后端分离项目搭建---小白入门

首先&#xff0c;介绍一下软件准备工作 1.vscode 2.maven 3.vue搭建&#xff1a;node.jsyarnvite 一.后端搭建 打开vscode,建立一个springboot项目&#xff0c;参考链接&#xff1a;sping boot项目搭建 建立一个项目&#xff0c;目录结构如下&#xff1a; helloController.java…

“苏超”拉动周末消费,抖音生活服务:比赛城市迎来普遍消费上涨

“苏超”爆火&#xff0c;有力拉升了紧随赛程的周末消费。抖音生活服务数据显示&#xff0c;刚刚过去的周末&#xff08;6月21日至22日&#xff09;&#xff0c;江苏商圈休闲运动团购订单消费环比增长225%&#xff0c;到店消费金额环比增长181%。虽然几个比赛城市周末天气欠佳&…

使用python开发一个exe版本的计算器项目练习

最近在练习python开发软件&#xff0c;就开发了一个 客户端版的 计算器。先给大家看一下 做出来的样子 python版本&#xff1a;3.8 以上 主要是 使用 import tkinter as tk 这个库来实现图形界面开发 代码还是比较简单的&#xff1a; # 创建主窗口 root tk.Tk() root.title…

uniapp开发小程序,导出文件打开并保存,实现过程downloadFile下载,openDocument打开

uniapp开发小程序&#xff0c;导出文件打开并保存 实现思路 1、调用请求获取到后端接口返回的下载文件的url路径 &#xff08;注意必须是https的路径&#xff0c;域名需要配置在微信小程序后台的合法域名里面&#xff09; 2、使用 uni.downloadFile 方法 &#xff08;下载文件…

vue2中前端实现图片裁剪上传到服务器

在 Vue 2 中实现图片裁剪并上传到服务器&#xff0c;你可以结合使用 Cropper.js 来进行图片裁剪&#xff0c;并通过 Axios 或者其他 HTTP 客户端库将裁剪后的图片上传至服务器。以下是一个基本的实现步骤和示例代码&#xff1a; 步骤 安装依赖&#xff1a;你需要安装 cropperj…

C# 网络编程-关于HttpWebRequest使用方式(二)

项目开发用到数据请求时候&#xff0c;会用的到HttpWebRequest的请求方式&#xff0c;主要涵盖GET、POST、PUT、DELETE等方法 一、HttpWebRequest简介 HttpWebRequest是.NET Framework中用于发送HTTP请求的核心类&#xff0c;适用于构建HTTP客户端。它支持GET、POST、PUT、DE…

git变更记录

目录 wvp-ui -new Dji 10.60.2.175:8000上的编译 个人拉分支 目前约定2025-06-25 wvp-ui -new branch new BASE_URL /new/ ci-cd : wvp-newui Config [Jenkins] 禁 用 10.30.2.8 ssh 10.30.2.8 /home/dualven/wvp-server/deployNewUi.sh Dji 主分支的构建&#xf…

前端如何禁止用户复制?

禁用右键菜单 document.addEventListener(contextmenu, function(e) {e.preventDefault(); });禁用快捷键&#xff08;CtrlC/X/A等&#xff09; document.addEventListener(keydown, function(e) {if (e.ctrlKey && [c, x, v, a].includes(e.key.toLowerCase())) {e.…

阿里云无影:开启云端办公娱乐新时代

阿里云无影云电脑&#xff1a;打破传统束缚&#xff0c;畅享云端自由 在数字化浪潮汹涌澎湃的当下&#xff0c;云计算技术持续革新&#xff0c;为我们的工作与生活带来前所未有的变革。阿里云作为云计算领域的佼佼者&#xff0c;推出的无影云电脑无疑是一颗璀璨的明星&#xf…

Windows 和 macOS 串口调试软件

在 Windows 和 macOS 上&#xff0c;你可以使用以下串口调试软件来查看开发板的打印信息。以下是常见且好用的工具推荐&#xff1a; Windows 推荐工具 PuTTY 免费、轻量级&#xff0c;支持串口&#xff08;COM&#xff09;和 SSH/Telnet下载地址&#xff1a;https://www.putty.…

Redis 的作用及详细分析

网上查询总结了一下Redis相关的信息 记录一下 &#xff0c;有问题的地方&#xff0c;望多加指正&#xff0c;我们共同学习。 什么是Redis Redis是一款内存高速缓存数据库。Redis全称为&#xff1a;Remote Dictionary Server &#xff08;远程数据服务&#xff09;&#xff0c;…

【边缘计算】引论基础

&#xff08;1&#xff09;在不远的未来&#xff0c;将有超过50%的数据需要在网络边缘侧分析、处理与储存。智能互联的网络边缘侧将会面临如下挑战&#xff1a; 联接设备的海量与异构 随着联接设备数量的剧增&#xff0c;网络运维管理、灵活扩展和可靠性保障都面临着巨大挑战。…

SpringBoot中4种登录验证码实现方案

文章目录 详解方案一&#xff1a;基于kaptcha的图形验证码实现步骤 方案二&#xff1a;基于短信验证码实现步骤 方案三&#xff1a;基于Spring Mail的邮箱验证码实现步骤 方案四&#xff1a;基于AJ-Captcha的滑动拼图验证码实现步骤 总结 详解 在Web应用中&#xff0c;验证码是…

基于版本控制+WORM的OSS数据保护:防勒索攻击与法规遵从实践

1. 数据保护的核心挑战与解决方案架构 &#xff08;1&#xff09;现代数据保护的三大矛盾 勒索软件进化 vs 传统备份脆弱性&#xff1a;攻击者已掌握备份系统删除技术&#xff08;如vssadmin delete shadows&#xff09;法规保留要求&#xff08;GDPR第17条&#xff09;vs 技…

混合架构入门:如何选组合恰当的云 + 私有节点?

如果你最近刚开始搭建业务系统&#xff0c;或者准备从传统IDC迁移到云上&#xff0c;你很可能已经被“混合云”、“多云”、“私有部署”这些概念绕得头晕。而今天这篇文章&#xff0c;不会再罗列概念或抄定义&#xff0c;而是站在一个运维工程师、架构规划者的角度&#xff0c…