c++ 获取静态数组的已使用长度
时间: 2024-01-07 19:05:04 浏览: 27
在 C++ 中,静态数组是一种在编译时就确定大小的数组,它的长度是固定的,因此可以使用常量来表示已使用长度。另外,C++11 引入了 std::extent 模板类,可以用来获取静态数组的长度。以下是两种方法的示例:
```c++
int arr[10] = {1, 2, 3, 4, 5}; // 只初始化了前 5 个元素
const int used_len = 5; // 声明已使用长度为 5
// 方法一:使用常量表示已使用长度
for (int i = 0; i < used_len; ++i) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
// 方法二:使用 std::extent 获取数组长度
for (int i = 0; i < std::extent<decltype(arr)>::value; ++i) {
if (i < used_len) {
std::cout << arr[i] << " ";
} else {
std::cout << "0 ";
}
}
std::cout << std::endl;
```
在这个示例中,我们定义了一个包含 10 个 int 类型元素的静态数组 arr,但只初始化了前 5 个元素。使用方法一,我们可以使用常量 used_len 来表示已使用长度,然后只遍历前 used_len 个元素。使用方法二,我们使用 std::extent<decltype(arr)>::value 来获取数组的长度,然后将数组中未使用的部分填充为 0。