具有多个类型名称的C++模板

imk*_*dal 1 c++ arrays templates function

我正在学习一种用于查找数组中元素数量的技术(这样我就可以开始编写排序算法,而不需要将数组的长度作为参数传递,但是在教程中,这个line显示为模板声明:

template <typename T, size_t N>
Run Code Online (Sandbox Code Playgroud)

老实说,我不知道你可以在一个模板声明中声明多个类型名称,但是"size_t N"的作用是什么?这是一个模板声明中的变量声明吗?

chr*_*ris 6

size_t是一种类似的类型unsigned int.将它放在模板参数中只意味着您传递的是一个size_t而不是一个类型.N可能表示数组的大小,这是一个无符号值.例如:

template<typename T, size_t N>
void zeroArray(T (&arr)[N]) {    //arr is a reference to an array 
    std::fill(arr, arr + N, 0);  //of N elements of type T
}

int main() {
    int arr[3];
    zeroArray<int, 3>(arr);
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我可以说:

zeroArray(arr);
Run Code Online (Sandbox Code Playgroud)

因为两个模板参数都是推导出来的.