int arr1[5] = {1, 2, 3, 4, 5};
定义了一个包含 5 个整数的数组。也可部分初始化,如int arr2[5] = {1, 2};
,未初始化的元素自动初始化为 0。new
关键字在堆上动态分配内存创建。如int* dynamicArr = new int[10];
,需手动用delete[]
释放内存,否则会内存泄漏。[]
访问,下标从 0 开始。例如arr1[2]
访问arr1
的第 3 个元素。也可通过指针偏移,因为数组名是指向首元素的指针,*(arr1 + 2)
与arr1[2]
等价。for
循环:用for
循环遍历数组。示例代码如下:#include
int main() {
int arr[5] = {1, 3, 5, 7, 9};
for (int i = 0; i < 5; i++) {
std::cout << arr[i] << " ";
}
return 0;
}
foreach
循环:C++11 引入的foreach
循环使遍历更简洁。示例代码如下:#include
int main() {
int arr[5] = {2, 4, 6, 8, 10};
for (int num : arr) {
std::cout << num << " ";
}
return 0;
}
void function_name(data_type array_name[])
和void function_name(data_type* array_name)
。通常还需额外传递参数表示数组大小。示例代码如下:#include
void modifyArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
arr[i] *= 2;
}
}
int main() {
int numbers[5] = {1, 2, 3, 4, 5};
modifyArray(numbers, 5);
for (int i = 0; i < 5; i++) {
std::cout << numbers[i] << " ";
}
return 0;
}
data_type array_name[row_size][column_size];
,如int matrix[3][4];
。初始化可按行优先顺序,如int matrix[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
。matrix[1][2]
访问第二行第三列的元素。示例代码如下:#include
int main() {
int matrix[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
std::cout << matrix[i][j] << " ";
}
std::cout << std::endl;
}
return 0;
}
int cube[2][3][4];
,可类比二维数组的操作方式进行定义、初始化和访问。#include
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int* ptr = arr;
for (int i = 0; i < 5; i++) {
std::cout << *(ptr + i) << " ";
}
return 0;
}
在使用数组时,要注意下标越界问题,避免访问非法内存导致程序出错。同时,合理选择静态数组和动态数组,根据实际需求管理好内存。
然而,相比较C语言,C++除了给出数组供我们存储数据,还有一种更为简单易用的数据结构,叫做vector,它包含在C++的STL库中
vector
。#include
#include
int main() {
std::vector<int> vec1;
return 0;
}
vector
,所有元素初始化为默认值(对于int
类型是 0)。#include
#include
int main() {
std::vector<int> vec2(5);
for (int num : vec2) {
std::cout << num << " ";
}
return 0;
}
vector
,并将所有元素初始化为指定值。#include
#include
int main() {
std::vector<int> vec3(5, 10);
for (int num : vec3) {
std::cout << num << " ";
}
return 0;
}
vector
。#include
#include
int main() {
std::vector<int> vec4 = {1, 2, 3, 4, 5};
for (int num : vec4) {
std::cout << num << " ";
}
return 0;
}
vector
初始化:使用另一个vector
来初始化新的vector
。#include
#include
int main() {
std::vector<int> vec5 = {1, 2, 3};
std::vector<int> vec6(vec5);
for (int num : vec6) {
std::cout << num << " ";
}
return 0;
}
[]
运算符访问vector
中的元素。#include
#include
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
std::cout << "The third element is: " << vec[2] << std::endl;
return 0;
}
at()
函数访问:at()
函数会进行边界检查,越界时抛出std::out_of_range
异常。#include
#include
#include
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
try {
std::cout << "The third element is: " << vec.at(2) << std::endl;
// 尝试访问越界元素
std::cout << "Accessing out - of - range element: " << vec.at(10) << std::endl;
} catch (const std::out_of_range& e) {
std::cerr << "Exception: " << e.what() << std::endl;
}
return 0;
}
vector
。#include
#include
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
std::vector<int>::iterator it;
for (it = vec.begin(); it!= vec.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
push_back()
添加元素:在vector
的末尾添加一个元素。#include
#include
int main() {
std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
for (int num : vec) {
std::cout << num << " ";
}
return 0;
}
pop_back()
删除元素:删除vector
末尾的元素。#include
#include
int main() {
std::vector<int> vec = {1, 2, 3};
vec.pop_back();
for (int num : vec) {
std::cout << num << " ";
}
return 0;
}
insert()
插入元素:在指定位置插入元素。#include
#include
int main() {
std::vector<int> vec = {1, 2, 4};
std::vector<int>::iterator it = vec.begin() + 2;
vec.insert(it, 3);
for (int num : vec) {
std::cout << num << " ";
}
return 0;
}
erase()
删除元素:删除指定位置或指定范围的元素。#include
#include
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 删除第三个元素
std::vector<int>::iterator it1 = vec.begin() + 2;
vec.erase(it1);
// 删除第二到第四个元素
std::vector<int>::iterator it2 = vec.begin() + 1;
std::vector<int>::iterator it3 = vec.begin() + 3;
vec.erase(it2, it3);
for (int num : vec) {
std::cout << num << " ";
}
return 0;
}
size()
函数获取vector
中元素的数量。#include
#include
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
std::cout << "Size of the vector: " << vec.size() << std::endl;
return 0;
}
empty()
函数检查vector
是否为空。#include
#include
int main() {
std::vector<int> vec1;
std::vector<int> vec2 = {1};
std::cout << "vec1 is empty: " << (vec1.empty()? "Yes" : "No") << std::endl;
std::cout << "vec2 is empty: " << (vec2.empty()? "Yes" : "No") << std::endl;
return 0;
}
vector
:使用clear()
函数清空vector
中的所有元素。#include
#include
int main() {
std::vector<int> vec = {1, 2, 3};
vec.clear();
std::cout << "Size after clear: " << vec.size() << std::endl;
return 0;
}