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
可能仍然需要在数组长度上模板化函数-因此,即使有了该修复,问题仍然相关。