MST

星途 面试题库

面试题:C++函数模板非类型参数:简单应用

请编写一个C++函数模板,使用非类型参数来定义数组的大小,并在函数内部打印该数组。例如,调用这个函数模板时可以传入不同的数组大小,函数能够相应地处理不同大小的数组。请阐述非类型参数在此处相较于常规方法的优势。
25.7万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

template <size_t N>
void printArray() {
    int arr[N];
    for (size_t i = 0; i < N; ++i) {
        arr[i] = i;
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
}

非类型参数相较于常规方法的优势

  1. 编译期确定:非类型参数在编译期就确定了数组的大小,这使得编译器可以在编译时进行更多的优化,例如数组边界检查优化等,相比在运行期确定大小的常规方法,提高了效率。
  2. 代码复用:通过函数模板结合非类型参数,可以复用同一份代码来处理不同大小的数组,而常规方法可能需要针对不同大小的数组编写不同的函数,增加了代码量。
  3. 类型安全:非类型参数的类型在编译期就已知,编译器可以更好地检查类型兼容性,相比传递变量作为数组大小(常规方法),减少了运行时错误的可能性。