vector<int> 的用法

vector<int> 是 C++ 标准模板库(STL)中的一个容器,用于存储动态大小的整数序列。以下是它的主要用法:

基本操作

1. 创建和初始化

复制代码
#include <vector>
using namespace std;

vector<int> v1;             // 空vector
vector<int> v2(5);          // 包含5个0
vector<int> v3(5, 10);      // 包含5个10
vector<int> v4 = {1, 2, 3}; // 初始化列表(C++11)
vector<int> v5(v4);         // 拷贝构造

2. 添加元素

复制代码
v1.push_back(10);      // 在末尾添加元素10
v1.emplace_back(20);   // 更高效的添加方式(C++11)
v1.insert(v1.begin(), 5); // 在开头插入5

3. 访问元素

复制代码
int a = v1[0];         // 不检查边界
int b = v1.at(1);      // 检查边界,越界抛出异常
int c = v1.front();    // 第一个元素
int d = v1.back();     // 最后一个元素

4. 删除元素

复制代码
v1.pop_back();         // 删除最后一个元素
v1.erase(v1.begin());  // 删除第一个元素
v1.erase(v1.begin(), v1.begin()+2); // 删除前两个元素
v1.clear();            // 清空所有元素

5. 容量和大小

复制代码
int size = v1.size();      // 元素数量
bool empty = v1.empty();   // 是否为空
v1.resize(10);             // 调整大小
int cap = v1.capacity();   // 当前分配的存储容量
v1.reserve(100);           // 预留空间

常用方法

遍历vector

复制代码
// 使用下标
for (size_t i = 0; i < v1.size(); ++i) {
    cout << v1[i] << " ";
}

// 使用迭代器
for (auto it = v1.begin(); it != v1.end(); ++it) {
    cout << *it << " ";
}

// 范围for循环(C++11)
for (int num : v1) {
    cout << num << " ";
}

排序

复制代码
#include <algorithm>
sort(v1.begin(), v1.end()); // 升序
sort(v1.rbegin(), v1.rend()); // 降序

查找

复制代码
auto it = find(v1.begin(), v1.end(), 10);
if (it != v1.end()) {
    // 找到元素
}

高级用法

二维vector

复制代码
vector<vector<int>> matrix(3, vector<int>(4)); // 3行4列矩阵
matrix[0][1] = 5; // 访问元素

交换两个vector

复制代码
vector<int> v6 = {1, 2, 3};
vector<int> v7 = {4, 5, 6};
v6.swap(v7); // 交换内容

移动语义(C++11)

复制代码
vector<int> v8 = std::move(v7); // 移动而非拷贝

性能提示

  1. 预先使用reserve()可以减少动态内存分配次数

  2. emplace_back()push_back()更高效

  3. 删除中间元素会导致后续元素移动,效率较低

vector<int> 是C++中最常用的容器之一,提供了动态数组的功能,同时保持了高效的随机访问能力。

相关推荐
琹箐16 小时前
最大堆和最小堆 实现思路
java·开发语言·算法
renhongxia117 小时前
如何基于知识图谱进行故障原因、事故原因推理,需要用到哪些算法
人工智能·深度学习·算法·机器学习·自然语言处理·transformer·知识图谱
坚持就完事了17 小时前
数据结构之树(Java实现)
java·算法
算法备案代理17 小时前
大模型备案与算法备案,企业该如何选择?
人工智能·算法·大模型·算法备案
赛姐在努力.17 小时前
【拓扑排序】-- 算法原理讲解,及实现拓扑排序,附赠热门例题
java·算法·图论
rainbow688918 小时前
EffectiveC++入门:四大习惯提升代码质量
c++
秋邱18 小时前
用 Python 写出 C++ 的性能?用CANN中PyPTO 算子开发硬核上手指南
开发语言·c++·python
我在人间贩卖青春18 小时前
C++之析构函数
c++·析构函数
野犬寒鸦18 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
霖霖总总18 小时前
[小技巧66]当自增主键耗尽:MySQL 主键溢出问题深度解析与雪花算法替代方案
mysql·算法