- C++
数组和 vector
- 2024-12-13 9:26:43 @
C++数组和 vector 教程
一、引言
在 C++编程中,数组和 vector
都是用于存储一组元素的数据结构。数组是一种固定大小的数据结构,而 vector
是一种动态数组,可以在运行时改变大小。本教程将详细介绍数组和 vector
的使用方法,包括它们的声明、初始化、元素访问、添加元素、删除元素以及常见操作。
二、数组
(一)数组的声明和初始化
数组的大小在声明时确定,且不能更改。可以使用以下方式声明和初始化数组:
#include <bits/stdc++.h>
using namespace std;
int main() {
// 声明并初始化一个包含 5 个元素的整数数组
int arr[5] = {1, 2, 3, 4, 5};
// 部分初始化,未初始化的元素默认为 0
int arr2[5] = {1, 2};
// 未初始化的数组,元素的值是未定义的
int arr3[5];
// 输出数组元素
for (int i = 0; i < 5; ++i) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
在上述代码中:
int arr[5] = {1, 2, 3, 4, 5};
声明并初始化了一个包含 5 个元素的整数数组。int arr2[5] = {1, 2};
部分初始化数组,未明确初始化的元素默认为 0。int arr3[5];
声明了一个未初始化的数组,元素的值是未定义的,可能包含垃圾值。
(二)数组的元素访问
使用 []
运算符访问数组元素。数组的索引从 0 开始,到 size - 1
结束,其中 size
是数组的大小。
#include <bits/stdc++.h>
using namespace std;
int main() {
int arr[5] = {1, 2, 3, 4, 5};
// 访问数组元素
cout << "第三个元素是:" << arr[2] << endl;
return 0;
}
这里,arr[2]
访问数组 arr
的第三个元素(因为索引从 0 开始)。
(三)修改数组元素
可以通过 []
运算符修改数组元素的值。
#include <bits/stdc++.h>
using namespace std;
int main() {
int arr[5] = {1, 2, 3, 4, 5};
// 修改第三个元素
arr[2] = 10;
cout << "修改后的第三个元素是:" << arr[2] << endl;
return 0;
}
arr[2] = 10;
将数组 arr
的第三个元素修改为 10。
(四)多维数组
可以声明和使用多维数组,例如二维数组:
#include <bits/stdc++.h>
using namespace std;
int main() {
// 声明一个 3x3 的二维数组
int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
// 访问二维数组元素
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
matrix[i][j]
用于访问二维数组 matrix
的元素,其中 i
是行索引,j
是列索引。
三、vector
(一)vector 的声明和初始化
vector
是 std
命名空间中的一个类模板,需要包含 <vector>
头文件(但使用 <bits/stdc++.h>
时已包含)。
#include <bits/stdc++.h>
using namespace std;
int main() {
// 声明并初始化一个 vector
vector<int> v = {1, 2, 3, 4, 5};
// 声明一个空的 vector
vector<int> v2;
// 声明一个指定大小的 vector,元素默认初始化为 0
vector<int> v3(5);
// 声明一个指定大小且元素初始化为 2 的 vector
vector<int> v4(5, 2);
// 输出 vector 元素
for (int i : v) {
cout << i << " ";
}
cout << endl;
return 0;
}
在上述代码中:
vector<int> v = {1, 2, 3, 4, 5};
声明并初始化了一个包含元素 1, 2, 3, 4, 5 的vector
。vector<int> v2;
声明了一个空的vector
。vector<int> v3(5);
声明了一个大小为 5 的vector
,元素默认初始化为 0。vector<int> v4(5, 2);
声明了一个大小为 5 的vector
,元素初始化为 2。
(二)vector 的元素访问
使用 []
运算符或 at()
方法访问 vector
的元素。
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
// 使用 [] 访问元素
cout << "第三个元素是:" << v[2] << endl;
// 使用 at() 方法访问元素
cout << "第三个元素是:" << v.at(2) << endl;
return 0;
}
v[2]
和 v.at(2)
都可以访问 vector v
的第三个元素。但 at()
方法会进行边界检查,如果越界将抛出 out_of_range
异常,而 []
操作符不会。
(三)添加元素到 vector
使用 push_back()
方法向 vector
的末尾添加元素。
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v;
// 添加元素
v.push_back(1);
v.push_back(2);
v.push_back(3);
// 输出元素
for (int i : v) {
cout << i << " ";
}
cout << endl;
return 0;
}
push_back()
方法将元素添加到 vector
的末尾。
(四)删除 vector 中的元素
可以使用 pop_back()
方法删除 vector
的最后一个元素。
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
// 删除最后一个元素
v.pop_back();
// 输出元素
for (int i : v) {
cout << i << " ";
}
cout << endl;
return 0;
}
pop_back()
方法会移除 vector
的最后一个元素。
(五)vector 的大小和容量
可以使用 size()
方法获取 vector
的元素数量,使用 capacity()
方法获取 vector
的容量。
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
cout << "vector 的大小:" << v.size() << endl;
cout << "vector 的容量:" << v.capacity() << endl;
return 0;
}
size()
方法返回 vector
中元素的数量,capacity()
方法返回 vector
可容纳元素的数量,可能大于 size()
。
(六)清空 vector
使用 clear()
方法清空 vector
的元素。
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
// 清空 vector
v.clear();
cout << "清空后 vector 的大小:" << v.size() << endl;
return 0;
}
clear()
方法会移除 vector
中的所有元素,使其大小变为 0。
四、总结
本教程介绍了 C++中数组和 vector
的使用方法。数组适用于大小固定的元素集合,而 vector
提供了更灵活的动态数组功能,适合大小不确定或需要动态变化的情况。根据不同的需求,可以灵活选择使用数组或 vector
。在实际编程中,要注意数组的固定大小和 vector
的动态特性,以及 vector
操作的性能开销(例如,频繁的 push_back()
可能导致重新分配内存)。如果还有其他问题或需要进一步的帮助,请随时联系我。
这个文档涵盖了 C++中数组和 vector
的基本操作和使用方法,包括声明、初始化、元素访问、添加元素、删除元素等,希望能帮助你更好地理解和使用这些数据结构。在编写程序时,根据具体情况选择合适的数据结构,可以提高程序的效率和可维护性。