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

C++(23):容器类<vector>

目录

一、核心概念     

二、基本语法

1. 头文件

2. 声明与初始化

三、常用操作

四、具体实例

1、size()、front()、back()

2、push_back()、pop_back()、capacity()

3、reserve() 


一、核心概念     

        Vectors 包含着一系列连续存储的元素,其行为和数组类似。

        C++标准模板库(STL)是C++标准库的核心组件,提供了一套通用的数据结构和算法模板。其中<vector>是最常用的容器之一,实现了动态数组的功能。

        vector是一种序列容器,内部使用动态分配的数组存储元素。它支持快速随机访问,可以通过下标直接访问任意元素,时间复杂度为O(1)。与普通数组不同,vector能自动管理内存,当元素数量超过当前容量时会自动扩容,通常按原有容量的1.5或2倍进行扩展。

二、基本语法

1. 头文件

         在 C++ 中,使用 <vector> 需要包含头文件 <vector>。

#include <vector>
2. 声明与初始化

        <vector> 需要指定元素类型,可通过多种方式进行初始化。

vector<T> vec;            // 默认初始化(空vector)
vector<T> vec(n);         // 创建包含n个默认初始化元素的vector
vector<T> vec(n, value);  // 创建包含n个值为value的元素的vector
vector<T> vec{1, 2, 3};  // 初始化列表(C++11)#include <iostream>
#include <vector>int main() {std::vector<int> vec1;                  // 空的vectorstd::vector<int> vec2(5);               // 长度为5的vector,元素默认初始化std::vector<int> vec3(5, 10);           // 长度为5的vector,元素值为10std::vector<int> vec4 = {1, 2, 3, 4};   // 使用初始化列表初始化return 0;
}
//声明一个 vector
std::vector<int> myVector;//添加元素
myVector.push_back(10);//访问元素
int firstElement = myVector[0];//获取元素数量
size_t size = myVector.size();//清空 vector
myVector.clear();

三、常用操作

方法/操作功能描述时间复杂度
vec.push_back(x)在末尾添加元素O(1)平均
vec.pop_back()删除末尾元素O(1)
vec.size()返回当前元素数量O(1)
vec.empty()检查是否为空O(1)
vec[i]通过下标访问元素(无边界检查)O(1)
vec.at(i)通过下标访问元素(带边界检查)O(1)
vec.front()访问第一个元素O(1)
vec.back()访问最后一个元素O(1)
vec.clear()清空所有元素O(n)

四、具体实例

1、size()、front()、back()

#include <iostream>
#include <vector>using namespace std;int main() {vector<int> vec = { 1, 2, 3, 4, 5 };// 遍历输出所有元素cout << "向量元素:";for (int i = 0; i < vec.size(); ++i) {cout << vec[i] << " ";}cout << endl;// 获取首尾元素cout << "首元素:" << vec.front() << endl;cout << "末元素:" << vec.back() << endl;return 0;
}

#include <iostream>
#include <vector>using namespace std;int main() {// 创建整型向量容器vector<int> numbers;// 向容器添加数据numbers.push_back(1);  // 末尾插入元素10numbers.push_back(2);  // 末尾插入元素20numbers.push_back(3);  // 末尾插入元素30// 显示当前容器内容cout << "当前容器元素:";for (int i = 0; i < numbers.size(); ++i) {cout << numbers[i] << " ";}cout << endl;// 继续追加元素numbers.push_back(4);  // 末尾插入元素40numbers.push_back(5);  // 末尾插入元素50// 展示更新后的元素集合std::cout << "新增元素后容器内容:";for (int i = 0; i < numbers.size(); ++i) {cout << numbers[i] << " ";}cout << endl;// 获取首元素cout << "容器首元素为:" << numbers[0] << endl;// 清空容器数据numbers.clear();// 验证容器状态if (numbers.empty()) {cout << "当前容器已清空" << endl;}return 0;
}
2、push_back()、pop_back()、capacity()

#include <iostream>
#include <vector>
using namespace std;int main() {vector<int> vec;    // 创建整型向量容器// 向容器添加元素vec.push_back(1);  vec.push_back(1);  vec.push_back(2);  vec.push_back(8);// 显示容器元信息cout << "当前元素数量:" << vec.size() << endl;cout << "当前存储容量:" << vec.capacity() << endl;// 移除最后一个元素vec.pop_back();cout << "删除末尾元素后,数量:" << vec.size() << endl;return 0;
}

3、reserve() 

#include <iostream>
#include <vector>
using namespace std;int main() {vector<int> vec;          // 创建整型向量容器vec.reserve(10);          // 预分配容量空间,避免多次内存分配for (int i = 0; i < 10; ++i) {vec.push_back(i);     // 添加元素到容器末尾cout << "添加元素后的容量:" << i << ",当前容量:" << vec.capacity() << endl;}return 0;
}

http://www.xdnf.cn/news/520813.html

相关文章:

  • C++控制结构详解:if-else、switch、循环(for/while/do-while)
  • 嵌入式学习笔记 - U(S)ART 模块HAL 库函数总结
  • 开启健康生活的多元养生之道
  • Prism使用消息总线打开窗体的案例(中介者模式)
  • GBS 8.0服装裁剪计划软件在线试用
  • SAPROv5.7
  • Muduo网络库大总结
  • 大语言模型 vs NLTK/SpaCy:NLP工具的代际跃迁与互补之道
  • LORA 微调 - LoRA 介绍与 LoRA 微调指南
  • 最长公共子序列(LCS)
  • 网络编程套接字(二)
  • 17 C 语言数据类型转换与数据溢出回绕详解:隐式转换、显式转换、VS Code 警告配置、溢出回绕机制
  • 并发编程(4)
  • 中山市东区信息学竞赛2025 题目解析
  • CMake调试与详细输出选项解析
  • 基于区块链技术的智能汽车诊断与性能分析
  • 运行vscode编辑器源码
  • 课外活动:再次理解页面实例化PO对象的魔法方法__getattr__
  • 【免杀】C2免杀技术(五)动态API
  • C2S-Scale方法解读
  • [Android] 青木扫描全能文档3.0,支持自动扫描功能
  • 机器学习入门之朴素叶贝斯和决策树分类(四)
  • 【VMware】开启「共享文件夹」
  • 计算机系统的工作原理
  • 2.2.5
  • 进程间通信--信号量【Linux操作系统】
  • leetcode解题思路分析(一百六十四)1418 - 1424 题
  • [论文品鉴] DeepSeek V3 最新论文 之 MHA、MQA、GQA、MLA
  • 进程状态并详解S和D状态
  • C++学习:六个月从基础到就业——C++17:结构化绑定