- 数组是内存空间连续存储、相同类型数据的集合。
- 遍历方式:下标索引
- 下标:从 0 开始
- 数组的元素不能删除,只能覆盖
定义一维数组:
int arr0[10];
int arr1[10] = { 100, 90,80,70,60,50,40,30,20,10 };
int arr2[ ] = { 100,90,80,70,60,50,40,30,20,10 };
cout << "整个数组所占内存空间为: " << sizeof(arr1) << endl;
cout << "每个元素所占内存空间为: " << sizeof(arr1[0]) << endl;
cout << "数组的元素个数为: " << sizeof(arr1) / sizeof(arr1[0]) << endl;
二维数组:
int arr[2][3];
int arr1[2][3] = {{1,2,3},{4,5,6}};
int arr2[2][3] = {1,2,3,4,5,6};
int arr3[ ][3] = {1,2,3,4,5,6};
int arr1[2][3] = {{1,2,3},{4,5,6}};
cout << "二维数组大小: " << sizeof(arr1) << endl;
cout << "二维数组一行大小: " << sizeof(arr1[0]) << endl;
cout << "二维数组元素大小: " << sizeof(arr1[0][0]) << endl;
cout << "二维数组行数: " << sizeof(arr1) / sizeof(arr1[0]) << endl;
cout << "二维数组列数: " << sizeof(arr1[0]) / sizeof(arr1[0][0]) << endl;
容器-vector:
操作 | 操作 |
---|---|
创建 | vector<int> vec = {1,2,3,4,5,6} |
访问 | 使用下标 [ ] 或at() 访问元素 |
返回指向容器中第一个元素的迭代器 | vec.begin() |
返回指向容器最后一个元素所在位置后一个位置的迭代器 | vec.end() |
尾插 | vec.push_back(7) |
插入 | vec.insert(7) |
尾删 | vec.pop_back() |
返回第一个元素 | int x = vec.front() |
返回最后一个元素 | int y = vec.back() |
元素个数 | int size = vec.size() |
删除元素 | vec.erase(position) |
清空 | vec.clear() |
重新指定大小 | vec.resize(8) |
排序 | 使用sort函数:sort(vec.begin(), vec.end()) |
反转 | 使用reverse函数:reverse(vec.begin(), vec.end()) |
#include <vector>
vector<int> vec;
vector<int> vec1(5);// 包含5个元素,默认为0
vector<int> vec2(5, 10);//包含5个元素,每个值为10
vector<int> vec3 = {1,2,3,4,5,6};
// 尾插
vec.push_back(7);// 将 7 添加到 vec1的末尾
// 尾删
vec.pop_back();
// 访问元素
int x = vec[0]; // 访问第1个元素
int y = vec.at(1); // 访问第2个元素
// 插入元素
vec.insert(vec.begin(), 3);//指定位置插入元素
vec.insert(vec.begin(), 3, 10); // 指定位置 vec.begin() 插入 3 个值为 10 的元素
vec.insert(vec.begin(), vec.begin(), vec.end()); // 从vec的头部开始,连续插入vec区间[begin, end]的所有元素
// 获取元素数量
int size = vec.size();
// 调整vector的大小
vec.resize(10);// 将 vec调整为元素个数为10个的vector
// 删除元素
vec.erase(3); // 删除第4个元素
// 清空vector
vec.clear();
// 迭代访问
for(auto it = vec.begin(); it != vec.end(); ++it){
cout << *it << " ";
}
// 二维操作
vector<vector<int>> vec;
vector<vector<int>> vec(5, vector<int>(3));//定义一个5行3列,默认初始化为0的二维vector
vector<vector<int>> vec(5, vector<int>(3,1));//定义一个5行3列值全为1的二维vector
int rows = vec.size(); // 行数
int cols = vec[0].size(); // 列数(假设非空);或 vec[i].size()