- 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 的基本操作和使用方法,包括声明、初始化、元素访问、添加元素、删除元素等,希望能帮助你更好地理解和使用这些数据结构。在编写程序时,根据具体情况选择合适的数据结构,可以提高程序的效率和可维护性。