在C++中,获取数组大小以及操作多维数组都是很常见的任务。让我们逐步了解这些操作。
在C++中,一般情况下,数组的大小是在编译时确定的,因此无法像其他语言一样直接获取数组的大小。但是,可以通过一些技巧来获取数组的大小。
sizeof
运算符sizeof
运算符可以返回其操作数的大小(以字节为单位)。可以通过sizeof
运算符来获取数组的大小,然后除以单个元素的大小得到数组中元素的个数。
#include <iostream>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
std::cout << "Size of array: " << size << std::endl;
return 0;
}
可以编写一个模板函数来获取数组的大小,并通过模板参数推导来确定数组的大小。
#include <iostream>
template<typename T, size_t N>
constexpr size_t arraySize(T (&)[N]) {
return N;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
std::cout << "Size of array: " << arraySize(arr) << std::endl;
return 0;
}
C++支持多维数组,可以是二维、三维甚至更高维度的数组。多维数组可以通过嵌套数组或者使用指针来表示。
#include <iostream>
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
std::cout << "Element at arr[1][2]: " << arr[1][2] << std::endl;
return 0;
}
#include <iostream>
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
int* ptr = &arr[0][0]; // 获取指向第一个元素的指针
std::cout << "Element at arr[1][2]: " << *(ptr + 1*3 + 2) << std::endl;
return 0;
}
在这两种方法中,数组的元素都是连续存储的,只是访问的方式略有不同。第一种方法使用嵌套的数组索引来访问元素,而第二种方法通过指针算术来计算元素的地址。
原文链接:codingdict.net