- C++
通俗易懂的 C++ 中 vector 教程
- 2024-12-7 21:28:56 @
以下是一份通俗易懂的C++中 vector
教程:
1. 什么是 vector
vector
是C++标准模板库(STL)中的一个容器,简单来说,它就像是一个可以自动“变长”的数组。在普通的数组中,一旦定义了大小,就很难改变了,而 vector
能够根据你添加或删除元素的操作,自动调整自身的大小,使用起来非常灵活方便。
例如,你一开始不确定要存储多少个整数,使用 vector
就不用担心数组大小不够用或者浪费空间的问题啦。
2. 包含头文件
要使用 vector
,首先需要在代码开头包含对应的头文件,就像这样:
#include <vector>
3. 定义 vector
定义一个 vector
很简单,基本的语法格式如下:
vector<数据类型> 变量名;
比如说,如果你想定义一个用来存储整数的 vector
,可以这样写:
vector<int> myVector; // 这里定义了一个名为myVector的vector,用来存放int类型的元素
你还可以在定义的时候初始化它,给它赋一些初始值,例如:
vector<int> anotherVector = {1, 2, 3}; // 定义并初始化为包含1、2、3这三个整数的vector
或者指定它的初始大小,比如:
vector<double> sizeVector(5); // 定义了一个能存放5个double类型元素的vector,初始时这5个元素会被默认初始化为0(对于内置类型而言)
4. 向 vector
中添加元素
vector
提供了几种添加元素的方法,常用的是 push_back
函数。它会把元素添加到 vector
的末尾。
vector<int> numbers;
numbers.push_back(5); // 向numbers这个vector中添加整数5
numbers.push_back(8); // 再添加整数8,现在numbers里就有两个元素了,分别是5和8
5. 访问 vector
中的元素
可以像访问数组元素一样,使用下标来访问 vector
中的元素,不过要注意下标是从0开始的哦。
vector<int> elements = {10, 20, 30};
cout << elements[0] << endl; // 输出第一个元素10
cout << elements[1] << endl; // 输出第二个元素20
// 如果下标超出了vector中元素的个数范围,就会出现错误,所以访问的时候要确保下标合法哦
6. 获取 vector
的大小(元素个数)
使用 size
函数就能知道 vector
里目前有多少个元素啦。
vector<char> characters = {'a', 'b', 'c'};
int size = characters.size(); // 获取characters这个vector的元素个数,这里size的值会是3
cout << "这个vector里有 " << size << " 个元素" << endl;
7. 修改 vector
中的元素
同样通过下标找到要修改的元素,然后直接赋值就可以修改它的值了。
vector<string> words = {"hello", "world"};
words[0] = "hi"; // 把第一个元素从"hello"修改为"hi"
cout << words[0] << endl; // 现在输出的就是"hi"了
8. 删除 vector
中的元素
有几种不同的方式来删除元素呢。
pop_back
函数可以删除vector
的最后一个元素,比如:
vector<int> values = {1, 2, 3};
values.pop_back(); // 删除最后一个元素3,现在values里就只剩下1和2了
- 如果想删除指定位置的元素,可以用
erase
函数,不过要注意使用erase
函数时,后面的元素会往前移动来填补被删除元素的位置哦。例如:
vector<int> nums = {4, 5, 6, 7};
vector<int>::iterator it = nums.begin() + 1; // 获取指向第二个元素(下标为1)的迭代器
nums.erase(it); // 删除下标为1的元素(也就是5),现在nums里的元素就是4、6、7了
9. 遍历 vector
有几种常见的方法来遍历 vector
,把里面的元素一个个访问到。
- 使用下标遍历(和访问数组类似):
vector<int> numbersToTraverse = {11, 12, 13};
for (int i = 0; i < numbersToTraverse.size(); i++) {
cout << numbersToTraverse[i] << " ";
}
// 输出结果就是:11 12 13
- 使用迭代器遍历(迭代器可以理解为一种指向
vector
中元素的“指针”):
vector<float> floats = {1.1, 2.2, 3.3};
vector<float>::iterator iter;
for (iter = floats.begin(); iter!= floats.end(); iter++) {
cout << *iter << " ";
}
// 输出结果同样是:1.1 2.2 3.3
- 在C++ 11及以后的标准中,还可以使用范围
for
循环,这种方式写起来更简洁:
vector<string> names = {"Alice", "Bob", "Charlie"};
for (string name : names) {
cout << name << " ";
}
// 输出结果就是:Alice Bob Charlie
10. 其他常用操作和注意事项
vector
可以存储各种数据类型,不仅仅是内置类型,像自定义的结构体、类等也都可以存放在vector
里面哦。- 当
vector
中的元素很多,频繁地在中间插入或者删除元素可能会比较耗时,因为后面的元素都要移动位置来腾出空间或者填补空缺,所以如果有大量这样的操作需求,要考虑下效率问题啦。
总之,vector
是C++中一个非常实用的容器,掌握好它的基本用法,能让你在处理各种数据集合的时候更加得心应手哦。希望这份教程能帮助你很好地理解和使用 vector
!
0 条评论
目前还没有评论...