1. 引言
vector
的基本概念
在C++中,std::vector
是标准模板库(STL)的一部分,提供了一个动态数组的功能。与普通数组相比,vector
能够在运行时动态地改变大小,自动管理存储空间,从而为C++程序员提供了极大的灵活性和控制力。vector
支持随机访问,意味着可以直接通过索引访问任何元素,与数组非常相似,但提供了更多的功能和灵活性。
vector
与数组的比较
虽然vector
在很多方面类似于数组,但它们之间存在几个关键的区别:
- 动态大小 :与固定大小的数组不同,
vector
的大小可以在运行时动态增长或缩减。 - 内存管理 :
vector
自动处理其存储的分配和释放,无需程序员手动管理内存。 - 灵活性 :
vector
提供了一系列成员函数,用于插入、删除和访问元素,这使得数据的处理更加灵活和方便。
vector
因其灵活性和易用性,在C++程序设计中被广泛应用于各种场景,从简单的数据存储到复杂的数据结构处理。
2. vector
的核心特性
动态数组的实现
std::vector
在C++中实现了动态数组的概念,这意味着它能够根据需要自动增长和缩小。当新元素被添加到vector
中,而当前的存储空间不足以容纳更多元素时,vector
会自动分配一个更大的存储区域,将现有元素复制到新的存储区域中,然后添加新元素。这个过程是自动的,对于程序员来说是透明的。
自动管理内存
vector
的一个关键优势是它能够自动管理其元素的内存。这意味着程序员不需要担心分配和释放内存的问题,vector
会自动进行这些操作。当vector
的生命周期结束时,它会自动释放分配的内存,避免了内存泄漏的风险。
支持随机访问迭代器
vector
支持随机访问迭代器,这使得它可以像数组一样快速访问任何位置的元素。随机访问迭代器不仅允许通过迭代器加上一个偏移量来直接访问元素,而且还支持比较操作、递增和递减操作。这种灵活性和效率使得vector
非常适合需要频繁访问元素的场景。
3. 使用vector
vector
是C++中非常灵活和强大的容器,适用于多种场景。以下是一些关于创建、初始化和操作vector
的基本指导。
创建和初始化vector
- vector :创建一个没有元素的
vector
。
std::vector<int> vec;
- 初始化列表 :使用花括号初始化元素。
std::vector<int> vec = {
1, 2, 3, 4, 5};
- 指定大小和值 :创建具有特定大小的
vector
,可选地指定所有元素的初始值。
std::vector<int> vec(10); // 大小为10,默认值为0
std::vector<int> vec(10, 1); // 大小为10,所有元素的初始值为1
常用操作
- 添加元素 :使用
push_back
在vector
的末尾添加一个元素。
vec.push_back(6);
- 删除元素 :使用
pop_back
删除vector
末尾的元素。
vec