首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

模板函数如何"知道"作为模板参数给出的数组的大小?

在C++编程中,模板函数可以通过std::size()函数或std::extent来获取作为模板参数给出的数组的大小。

例如,以下代码展示了如何使用std::size()函数获取数组大小:

代码语言:cpp
复制
#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,它是一个类型特征,可以用来获取数组的大小。例如:

代码语言:cpp
复制
#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来获取作为模板参数给出的数组的大小。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券