vector::C++

在 C++ 标准库中,std::vector 是一个动态数组容器,提供了类似于数组的功能,但具有自动调整大小的能力。它是 C++ 标准模板库(STL)的一部分,广泛用于存储和管理一组动态大小的元素。

std::vector 的特点

  1. 动态大小:可以自动调整大小,当插入或删除元素时,std::vector 会自动调整自身的容量。
  2. 连续内存存储std::vector 在内存中是连续存储的,支持高效的随机访问。
  3. 丰富的成员函数:提供了多种成员函数用于元素的插入、删除、访问和遍历。
  4. 高效插入和删除:支持在末尾高效地插入和删除元素。

基本用法

包含头文件
#include <vector>
#include <iostream>
声明和初始化
std::vector<int> vec;                // 默认构造函数,创建一个空的 vector
std::vector<int> vec(10);            // 创建一个包含 10 个元素的 vector,元素值为默认值
std::vector<int> vec(10, 5);         // 创建一个包含 10 个元素的 vector,元素值为 5
std::vector<int> vec = {1, 2, 3, 4}; // 使用初始化列表创建 vector
访问元素
vec[0] = 10;            // 使用下标访问元素
int value = vec.at(1);  // 使用 at() 方法访问元素,带边界检查
int first = vec.front(); // 访问第一个元素
int last = vec.back();   // 访问最后一个元素
插入和删除元素
vec.push_back(6);       // 在末尾插入元素
vec.pop_back();         // 删除末尾元素
vec.insert(vec.begin() + 1, 8); // 在指定位置插入元素
vec.erase(vec.begin() + 2); // 删除指定位置的元素
vec.clear();            // 清空所有元素
迭代元素
// 使用范围 for 循环
for (int value : vec) {std::cout << value << " ";
}
std::cout << std::endl;// 使用迭代器
for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {std::cout << *it << " ";
}
std::cout << std::endl;

示例代码

以下是一个综合示例,展示了 std::vector 的常见操作:

#include <vector>
#include <iostream>int main() {// 创建并初始化 vectorstd::vector<int> vec = {1, 2, 3, 4, 5};// 访问和修改元素vec[0] = 10;vec.at(1) = 20;// 插入元素vec.push_back(6);vec.insert(vec.begin() + 2, 15);// 删除元素vec.pop_back();vec.erase(vec.begin() + 1);// 遍历并输出 vector 元素std::cout << "Vector elements: ";for (int value : vec) {std::cout << value << " ";}std::cout << std::endl;// 输出 vector 的大小和容量std::cout << "Size: " << vec.size() << std::endl;std::cout << "Capacity: " << vec.capacity() << std::endl;return 0;
}

常用成员函数

  • size():返回当前元素个数。
  • capacity():返回当前分配的存储容量。
  • empty():检查容器是否为空。
  • resize(size_t n):调整容器大小。
  • reserve(size_t n):预留存储空间,以减少后续的重新分配。
  • shrink_to_fit():减少容量以适应当前大小。
  • assign():用新元素替换当前元素。
  • data():返回指向容器中第一个元素的指针。

总结

std::vector 是一个非常灵活和高效的容器,适用于需要动态数组功能的场景。它提供了丰富的操作函数,可以方便地进行元素的插入、删除和访问。熟悉并掌握 std::vector 的用法是 C++ 编程的重要技能之一。

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

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

相关文章

axios源码打包关于rollup.config.js文件分析

axios 项目下的rollup.config.js文件 const lib require("./package.json"); const outputFileName "axios"; const name "axios"; const namedInput "./index.js"; const defaultInput "./lib/axios.js";export defa…

怎么彻底关闭Nacos?解决启动时Spring连接Nacos报错

Nacos Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它是阿里巴巴开源的一个项目,旨在帮助您发现、配置和管理微服务。Nacos提供了一系列丰富的特性集合,支持服务发现和服务健康监测、动态配置服务、服务元数据和流量管理等功能。 主要功能 服务…

Steam社区101错误代码/steam社区报错、打不开怎么办

Steam社区是很多游戏玩家经常逛的一个互动空间&#xff0c;玩家可以在Steam社区了解游戏的相关评价&#xff0c;也可以在Steam社区和五湖四海的游戏玩家一起讨论最近游戏的心得&#xff0c;分享游玩技巧&#xff0c;探讨游戏战术等等&#xff0c;结识不同地区的玩家。不过很多玩…

【数据库原理】总结(期末版)

题型关系范式题[数据库原理]关系范式总结&#xff08;自用&#xff09;-CSDN博客事务分析题[数据库原理]事务-CSDN博客Sql题 MySQL:MySQL基本语法 Oracle:Oracle基本语法 ​​​​​​ 关系代数[数据库原理]关系代数-CSDN博客 sql里面主要是考增删改查授权撤销权限等内容&#…

Java案例实现双色球

一问题&#xff1a; 二具体代码&#xff1a; package 重修;import java.util.Random; import java.util.Scanner;public class first {public static void main(String[] args) {int []usersnumbersusernumslect();System.out.println("用户");for (int i 0; i <…

Kafka如何防止消息重复发送

Kafka 提供了几种方式来防止消息重复发送和处理。这些方式通常取决于生产者和消费者的设置和实现方式&#xff1a; 生产者端幂等性&#xff08;什么是幂等性&#xff09;&#xff1a; 幂等性生产者&#xff1a;从 Kafka 0.11 版本开始引入了生产者端的幂等性支持。生产者可以通…

力扣hot100 -- 贪心算法

&#x1f442; ▶ 逍遥叹 - 胡歌&沈以城【Mashup】 (163.com) &#x1f442; 庐州月 - 许嵩 - 单曲 - 网易云音乐 2.7 小时&#xff0c;加上写博客&#xff0c;4 道题&#xff0c;&#x1f602; -- 希望二刷时&#xff0c;可以 3 小时&#xff0c;8 道题.... 目录 &…

SVN到Git过渡中分支管理经验(值得收藏)!

背景&#xff1a; SVN过渡到Git&#xff0c;分享项目中分支管理的经验。 分支类型&#xff1a; master分支&#xff1a;作为主分支&#xff0c;只能通过release分支合并&#xff0c;且只能由特定管理员操作。开发人员不能直接推送代码到远程仓库的master分支。release分支&…

怎么找短视频素材在哪里找?推荐五个自媒体人必备的视频素材网站

自媒体时代&#xff0c;短视频创作已成为主流。高质量的视频素材不仅能够提升内容质量&#xff0c;还能增加观众的观看兴趣。本文将为各位自媒体创作者介绍五大必备的视频素材网站&#xff0c;帮助大家轻松解决素材寻找的困扰&#xff0c;确保视频内容的专业性和吸引力。 蛙学…

【第二套】华为 2024 年校招-硬件电源岗

1.为了避免 50Hz 的电⽹电压⼲扰放⼤器&#xff0c;应该⽤那种滤波器&#xff1a; A.带阻滤波器 B.带通滤波器 C.低通滤波器 D.⾼通滤波器 2.PID 中的 I 和 D 的作⽤分别是&#xff1f; A、消除静态误差和提⾼动态性能 B、消除静态误差和减⼩调节时间 C、提⾼动态性能和减⼩超调…

三步学会使用WebSocekt

目录 一 什么是websocket 二 如何使用websocket 1.导入websocket的maven坐标 2.创建websocket的服务类 3.创建websocket的配置类 4.按需求实现业务逻辑 5.前端实现websocket 一 什么是websocket websocket和HTTP一样是基于TCP的一个通信协议。不过他是支持客户端和服务端…

1688商品采集用什么?【1688采集API接口】无视大量复制-同行店铺采集-批量全店采集-包邮商品采集

功能亮点&#xff1a; 1688同行店铺采集&#xff0c;1688批量全店采集&#xff0c;1688包邮商品采集&#xff0c;仅采集一件代发产品&#xff0c;采集发货时间&#xff0c;比如48小时发货&#xff0c;1688运费价格采集:可以采集运费价格 功能介绍二&#xff1a; 仅采集一件代…

数据结构与算法笔记:高级篇 - 并行算法:如何利用并行处理提高算法的执行效率?

概述 时间复杂度是衡量算法执行效率的一种标准。但是&#xff0c;时间复杂度并不能跟性能划等号。在真是的软件开发中&#xff0c;即便在不降低时间复杂度的情况下&#xff0c;也可以通过一些优化手段&#xff0c;提升代码的执行效率。毕竟&#xff0c;对于实际的软件开发来说…

Android Compose 十二:常用组件列表 上拉加载

列表 上拉加载 当前思路 判断 列表最后一个显示的条目 为 数据集合的长度-1 用来记录刷新状态 var refreshing by remember {mutableStateOf(false)}数据集合 val list remember{List(10){"条目》》${it}"}.toMutableStateList()}用来记录列表当前状态及状态变化…

行业分析---造车新势力之极氪汽车

1 前言 在之前的博客中&#xff0c;笔者撰写了多篇行业类分析的文章&#xff08;科技新能源&#xff09;&#xff1a; 《行业分析---我眼中的Apple Inc.》 《行业分析---马斯克的Tesla》 《行业分析---造车新势力之蔚来汽车》 《行业分析---造车新势力之小鹏汽车》 《行业分析-…

心跳机制简介

心跳机制 心跳机制&#xff08;Heartbeat Mechanism&#xff09;是一种用于监控和维护计算机系统、网络和分布式系统中各个节点之间连接状态的技术。它通过周期性地发送信号&#xff08;即“心跳”&#xff09;来确认系统组件之间的活跃性和可用性。如果某个节点没有在预期时间…

fastapi swagger js css 国内访问慢问题解决

fastapi swagger js css 国内访问慢问题解决 直接修改fastapi包中静态资源地址为如下地址 swagger_js_url: str "https://cdn.bootcdn.net/ajax/libs/swagger-ui/3.9.3/swagger-ui-bundle.js", swagger_css_url: str "https://cdn.bootcdn.net/ajax/libs/sw…

1971计算机毕业设计asp.net游乐园信息管理系统 VS开发access数据库web结构c#编程计算机网页源码项目

一、源码特点 asp.net游乐园信息管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 asp.net游乐园管理系统 二、功能介绍 前台功能&#xff1a; 1&#xff09;系统首页浏览 2&#xff09;园区通知浏…

leetcode-19-回溯-组合问题(剪枝、去重)

引自代码随想录 一、[77]组合 给定两个整数 n 和 k&#xff0c;返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4]] 1、大致逻辑 k为树的深度&#xff0c;到叶子节点的路径即为一个结果 开始索引保证不…

【计算机网络】网络层(作业)

【一】 1、某主机的 IP 地址为 166.199.99.96/19。若该主机向其所在网络发送广播 IP 数据报&#xff0c; 则目的地址可以是&#xff08;D&#xff09;。 A. 166.199.99.255B. 166.199.96.255C. 166.199.96.0D. 166.199.127.255 解析&#xff1a; 166.199.99.96/19166.199.0…