Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 具有大小模板参数的函数_C++_Templates_Template Argument Deduction - Fatal编程技术网

C++ 具有大小模板参数的函数

C++ 具有大小模板参数的函数,c++,templates,template-argument-deduction,C++,Templates,Template Argument Deduction,我试图理解模板函数。最终目标是将整个数组传递给函数。似乎有许多不同的方法来实现这一点,但它们都使用模板函数。这是我发现的一个简单的例子 template<size_t N> void h(Sample (&arr)[N]) { size_t count = N; //N is 10, so would be count! //you can even do this now: //size_t count = sizeof(arr)/sizeof(ar

我试图理解模板函数。最终目标是将整个数组传递给函数。似乎有许多不同的方法来实现这一点,但它们都使用模板函数。这是我发现的一个简单的例子

template<size_t N>
void h(Sample (&arr)[N])
{
    size_t count = N; //N is 10, so would be count!
    //you can even do this now:
    //size_t count = sizeof(arr)/sizeof(arr[0]);  it'll return 10!
}
Sample arr[10];
h(arr); //pass : same as before!
模板
空隙h(样品和arr)[N])
{
size\u t count=N;//N是10,count也是!
//您现在甚至可以这样做:
//size\u t count=sizeof(arr)/sizeof(arr[0]);它将返回10!
}
样本arr[10];
h(arr)//通过:和以前一样!

我认为模板是用来创建一个变量,可以用来代替int、float、char等。。指定类型(size_t)有什么意义?这有什么作用?

模板参数是基于传递给模板函数的数组大小推导出的整数值。模板参数可以是

  • 非类型模板参数
  • 类型模板参数
  • 模板参数

参考:。

您可以对任何大小的数组重复使用模板。

请参阅。“最终目标是将整个数组传递给函数”。使用std::array或std::vector。@n.m.传递
std::array
可能仍然需要在数组长度上模板化函数-因此,即使有了该修复,问题仍然相关。