在C++编程中,模板函数可以通过std::size()
函数或std::extent
来获取作为模板参数给出的数组的大小。
例如,以下代码展示了如何使用std::size()
函数获取数组大小:
#include<iostream>
#include<array>
template<typename T, std::size_t N>
void print_array(const std::array<T, N>& arr) {
std::cout << "Array size: " << N << std::endl;
for (std::size_t i = 0; i < N; ++i) {
std::cout<< arr[i] << ' ';
}
std::cout<< std::endl;
}
int main() {
std::array<int, 5> arr = {1, 2, 3, 4, 5};
print_array(arr);
return 0;
}
在这个例子中,print_array
函数是一个模板函数,它接受一个std::array
作为参数。std::array
的大小是模板参数N
,我们可以在函数内部使用N
来获取数组的大小。
另一种方法是使用std::extent
,它是一个类型特征,可以用来获取数组的大小。例如:
#include<iostream>
#include<array>
#include <type_traits>
template<typename T, std::size_t N>
void print_array(const std::array<T, N>& arr) {
std::cout << "Array size: "<< std::extent<std::array<T, N>>::value<< std::endl;
for (std::size_t i = 0; i < N; ++i) {
std::cout<< arr[i] << ' ';
}
std::cout<< std::endl;
}
int main() {
std::array<int, 5> arr = {1, 2, 3, 4, 5};
print_array(arr);
return 0;
}
在这个例子中,我们使用std::extent
来获取数组的大小。std::extent
是一个类型特征,它的value
成员表示数组的大小。
总之,模板函数可以通过std::size()
函数或std::extent
来获取作为模板参数给出的数组的大小。
领取专属 10元无门槛券
手把手带您无忧上云