概念
STL(标准模板库)中的 vector
是 C++ 中一个非常常用的容器类。它是一个动态数组,可以自动调整大小,并提供了类似于数组的随机访问功能。
主要特点
- 动态大小:
vector
会根据需要自动调整其大小,允许在运行时增加或减少元素。
- 连续存储:
vector
的元素在内存中是连续存储的,这意味着可以通过偏移量进行高效的随机访问。
- 自动管理内存:
vector
会自动管理其所需的内存,因此无需手动分配或释放内存。
- 丰富的接口:
vector
提供了一组丰富的成员函数,用于插入、删除、访问和修改元素。
基本用法
1. 创建和初始化
1 2 3 4 5 6 7 8 9 10 11 12 13
| #include <vector> #include <iostream>
using namespace std;
int main() { vector<int> v1; vector<int> v2(10); vector<int> v3(10, 5); vector<int> v4 = {1, 2, 3, 4, 5};
return 0; }
|
2. 元素访问
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #include <iostream> #include <vector>
using namespace std;
int main() { vector<int> v = {1, 2, 3, 4, 5};
cout << v[0] << endl; cout << v.at(1) << endl;
cout << v.front() << endl; cout << v.back() << endl;
return 0; }
|
3. 插入和删除元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include <vector> #include <iostream>
using namespace std;
int main() { vector<int> v;
v.push_back(1); v.push_back(2);
v.pop_back();
v.insert(v.begin(), 0);
v.erase(v.begin());
v.clear();
return 0; }
|
迭代器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include <vector> #include <iostream>
using namespace std;
int main() { vector<int> v = {1, 2, 3, 4, 5};
for (vector<int>::iterator it = v.begin(); it != v.end(); ++it) { cout << *it << " "; } cout << endl;
for (int n : v) { cout << n << " "; } cout << endl;
return 0; }
|
常用成员函数
- 容量管理:
size()
:返回当前元素数量。
capacity()
:返回当前分配的存储空间的容量。
reserve(size_type n)
:请求至少能容纳 n
个元素的存储空间。
shrink_to_fit()
:减少容量以适应当前大小。
- 元素访问:
operator[]
:无边界检查的元素访问。
at(size_type n)
:带边界检查的元素访问。
front()
:返回第一个元素的引用。
back()
:返回最后一个元素的引用。
- 修改容器:
push_back(const T& value)
:在末尾插入元素。
pop_back()
:删除末尾的元素。
insert(iterator pos, const T& value)
:在指定位置插入元素。
erase(iterator pos)
:删除指定位置的元素。
clear()
:清空容器。