<typename> 在 c++ 中获取模板数组的长度



我正试图弄清楚如何在不迭代所有索引的情况下获得c++中数组的长度。功能如下:

template<typename T>
void linearSearch(T arr[], int n)
{
}

你不能。作为自变量的T arr[]是写入T* arr的一种模糊方式,并且指向数组第一个元素的指针不知道数组大小。

如果可能,请更改函数以通过引用而不是仅通过指针传递数组:

template <typename T, size_t N>
void linearSearch(T (&array)[N], int n);

如果使用std::array,事情会变得简单得多。

附言:正如对这个问题的评论所表明的,这个问题还不太清楚。这是您在获取大小后想要调用的函数,还是您需要获取该函数内部的大小?无论如何,我假设了后者,并且n是一个与数组大小无关的参数。进一步注意,还有std::size,您可以使用它来推断c数组的大小。然而,这也只适用于数组,而不是在数组衰减为指针时(当它作为参数传递给您发布的函数时(。

相关内容

  • 没有找到相关文章

最新更新