imk*_*dal 1 c++ arrays templates function
我正在学习一种用于查找数组中元素数量的技术(这样我就可以开始编写排序算法,而不需要将数组的长度作为参数传递,但是在教程中,这个line显示为模板声明:
template <typename T, size_t N>
Run Code Online (Sandbox Code Playgroud)
老实说,我不知道你可以在一个模板声明中声明多个类型名称,但是"size_t N"的作用是什么?这是一个模板声明中的变量声明吗?
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)
因为两个模板参数都是推导出来的.
| 归档时间: |
|
| 查看次数: |
799 次 |
| 最近记录: |