没有匹配的运营商,为什么这个代码没有得到cin?

时间:2015-09-29 12:21:21

标签: c++

#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 ++编写代码。 请回答:(

1 个答案:

答案 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;
}