[color=rgb(var(--ds-rgb-label-1))] C++ 中的数组分为两种:静态数组(C 风格数组)和 动态数组(如 std::vector)。以下是静态数组的常用操作及其功能的表格,附带简单的案例说明: 静态数组(C 风格数组)常用操作操作/函数名 功能描述 示例代码
数组声明 声明一个固定大小的数组int arr[5]; // 声明一个包含 5 个整数的数组
数组初始化 声明并初始化数组int arr[3] = {1, 2, 3}; // 声明并初始化数组
访问元素 通过索引访问数组元素int arr[3] = {1, 2, 3}; cout << arr[1]; // 输出 2
修改元素 通过索引修改数组元素int arr[3] = {1, 2, 3}; arr[1] = 10; // arr = {1, 10, 3}
数组遍历 使用循环遍历数组int arr[3] = {1, 2, 3}; for (int i = 0; i < 3; i++) cout << arr << " ";
数组大小 计算数组的大小(元素个数)int arr[3] = {1, 2, 3}; int size = sizeof(arr) / sizeof(arr[0]); // size = 3
数组作为参数传递 将数组传递给函数void printArray(int arr[], int size) { for (int i = 0; i < size; i++) cout << arr << " "; }
多维数组 声明和操作多维数组int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}}; cout << matrix[1][2]; // 输出 6
数组指针 使用指针访问数组元素int arr[3] = {1, 2, 3}; int* ptr = arr; cout << *(ptr + 1); // 输出 2
数组填充 使用 std::fill 填充数组int arr[3]; std::fill(arr, arr + 3, 10); // arr = {10, 10, 10}
数组排序 使用 std::sort 对数组排序int arr[3] = {3, 1, 2}; std::sort(arr, arr + 3); // arr = {1, 2, 3}
数组查找 使用 std::find 查找元素int arr[3] = {1, 2, 3}; auto it = std::find(arr, arr + 3, 2); if (it != arr + 3) cout << "Found";
数组复制 使用 std::copy 复制数组int src[3] = {1, 2, 3}; int dest[3]; std::copy(src, src + 3, dest); // dest = {1, 2, 3} 动态数组(std::vector)常用操作std::vector 是 C++ 标准库中的动态数组,提供了更丰富的功能。以下是常用操作: 操作/函数名 功能描述 示例代码
声明和初始化 声明并初始化 std::vectorstd::vector<int> vec = {1, 2, 3};
添加元素 使用 push_back 在末尾添加元素std::vector<int> vec; vec.push_back(10); // vec = {10}
删除元素 使用 pop_back 删除末尾元素std::vector<int> vec = {1, 2, 3}; vec.pop_back(); // vec = {1, 2}
访问元素 使用 [] 或 at 访问元素std::vector<int> vec = {1, 2, 3}; cout << vec[1]; // 输出 2
修改元素 使用 [] 或 at 修改元素std::vector<int> vec = {1, 2, 3}; vec[1] = 10; // vec = {1, 10, 3}
遍历数组 使用循环遍历 std::vectorfor (int i = 0; i < vec.size(); i++) cout << vec << " ";
数组大小 使用 size 获取元素个数std::vector<int> vec = {1, 2, 3}; cout << vec.size(); // 输出 3
清空数组 使用 clear 清空数组std::vector<int> vec = {1, 2, 3}; vec.clear(); // vec = {}
插入元素 使用 insert 在指定位置插入元素std::vector<int> vec = {1, 3}; vec.insert(vec.begin() + 1, 2); // vec = {1, 2, 3}
删除元素 使用 erase 删除指定位置的元素std::vector<int> vec = {1, 2, 3}; vec.erase(vec.begin() + 1); // vec = {1, 3}
排序数组 使用 std::sort 对数组排序std::vector<int> vec = {3, 1, 2}; std::sort(vec.begin(), vec.end()); // vec = {1, 2, 3}
查找元素 使用 std::find 查找元素std::vector<int> vec = {1, 2, 3}; auto it = std::find(vec.begin(), vec.end(), 2); if (it != vec.end()) cout << "Found"; 示例代码(静态数组):cpp
[backcolor=rgba(var(--ds-rgba-transparent))]复制
#include <iostream>#include <algorithm> // for std::sort, std::fill, std::copyusing namespace std;int main() { // 声明并初始化数组 int arr[5 = {5, 3, 1, 4, 2}; // 访问元素 cout << "Element at index 2: " << arr[2 << endl; // 输出 1 // 修改元素 arr[2 = 10; cout << "Modified element at index 2: " << arr[2 << endl; // 输出 10 // 遍历数组 cout << "Array elements: "; for (int i = 0; i < 5; i++) { cout << arr[i << " "; } cout << endl; // 数组排序 std::sort(arr, arr + 5); cout << "Sorted array: "; for (int i = 0; i < 5; i++) { cout << arr[i << " "; } cout << endl; // 数组填充 std::fill(arr, arr + 5, 7); cout << "Filled array: "; for (int i = 0; i < 5; i++) { cout << arr[i << " "; } cout << endl; return 0;}
示例代码(动态数组):cpp
[backcolor=rgba(var(--ds-rgba-transparent))]复制
#include <iostream>#include <vector>#include <algorithm> // for std::sort, std::findusing namespace std;int main() { // 声明并初始化 vector vector<int> vec = {5, 3, 1, 4, 2}; // 添加元素 vec.push_back(6); cout << "After push_back: "; for (int i : vec) cout << i << " "; cout << endl; // 删除元素 vec.pop_back(); cout << "After pop_back: "; for (int i : vec) cout << i << " "; cout << endl; // 排序 std::sort(vec.begin(), vec.end()); cout << "Sorted vector: "; for (int i : vec) cout << i << " "; cout << endl; // 查找元素 auto it = std::find(vec.begin(), vec.end(), 3); if (it != vec.end()) { cout << "Element 3 found at index: " << it - vec.begin() << endl; } return 0;}
输出结果(静态数组):
[backcolor=rgba(var(--ds-rgba-transparent))]复制
Element at index 2: 1Modified element at index 2: 10Array elements: 5 3 10 4 2 Sorted array: 2 3 4 5 10 Filled array: 7 7 7 7 7
输出结果(动态数组):
[backcolor=rgba(var(--ds-rgba-transparent))]复制
After push_back: 5 3 1 4 2 6 After pop_back: 5 3 1 4 2 Sorted vector: 1 2 3 4 5 Element 3 found at index:
[color=var(--ds-icon-button-text-color)]
[color=var(--ds-icon-button-text-color)]
[color=var(--ds-icon-button-text-color)]
[color=var(--ds-icon-button-text-color)]
[backcolor=rgb(var(--ds-rgb-blue-100))]
|