当前位置: 首页 > 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;
}

相关文章:

  • 聊天的表情包+发小文件+图片操作
  • 《P5283 [十二省联考 2019] 异或粽子》
  • Hugo 安装保姆级教程(搭建个人blog)
  • 软件架构设计--期末复习
  • HiTool机顶盒刷机提示:网络下载TFTP超时,可能的原因如下
  • volatile
  • DeepSeek 赋能太空探索:从轨道优化到星际开拓的 AI 革命
  • DAY 29 复习日:类的装饰器
  • tauri2项目动态添加 Sidecar可行性方案(运行时配置)
  • 高能数造闪耀 CIBF 2025,以创新技术引领新能源智造新征程
  • 基于MCP的AI Agent应用开发实践
  • 【ComfyUI】关于ComfyUI的一些基础知识和入门设置以及快捷键小技巧【简单易懂】
  • 通过串口设备的VID PID动态获取串口号(C# C++)
  • Java基于数组的阻塞队列实现详解
  • 算法-js-柱状图中最大的矩形
  • Qt如何设置图标
  • 【PyQt5实战】五大对话框控件详解:从文件选择到消息弹窗
  • 等于和绝对等于的区别
  • CHAIN-OF-TABLE: 推理链中的演化表格用于表格理解
  • 智慧园区数据大脑管理平台整体解决方案
  • 海南保亭警方通报“两飞车党紧追女童”:两名初中生认错道歉
  • 官方数据显示:我国心血管疾病患者已超3亿人
  • 商务部:对原产于美国、欧盟、台湾地区和日本的进口共聚聚甲醛征收反倾销税
  • AG600“鲲龙”批生产首架机完成生产试飞
  • 浙江美术馆馆长人民日报撰文:打开更辽阔的审美场域
  • 女生“生理期请病假要脱裤子证明”?高校回应:视频经处理后有失真等问题