我正试图弄清楚如何在不迭代所有索引的情况下获得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数组的大小。然而,这也只适用于数组,而不是在数组衰减为指针时(当它作为参数传递给您发布的函数时(。