#include <iostream>
template <typename T>
void Len(T a[200])
{
std::cout<< sizeof(a) / sizeof(a[0])<<std::endl;
}
int main()
{
int a[300];
std::cout<<"Put the values of array you want."<<std::endl;
std::cin>>a;
std::cout<<"The number of occurrences of value in the array is";
Len(a);
}
为什么此代码在std :: cin&gt;&gt; a中出错? 我几乎是第一次使用C ++编写代码。 请回答:(
答案 0 :(得分:4)
您不能直接输入像std::cin >> a;
这样的数组。您需要做的是遍历数组并将输入插入每个元素。你可以用
for(int i = 0; i < array_size && std::cin >> array_name[i]; ++i) {}
此外,您的数组大小功能也不正确。
template <typename T>
void Len(T a[200])
{
std::cout<< sizeof(a) / sizeof(a[0])<<std::endl;
}
此处a
将衰减为指针,返回的尺寸为sizeof(T*)/sizeof(T)
如果你想获得数组的大小,你可以使用
template <typename T, typename size_t N>
size_t get_array_size(T (&)[N])
{
return N;
}