用于查找数组的开头和结尾的函数

时间:2014-11-03 00:44:30

标签: c++ arrays visual-studio-2012

所以我只是试图将给定数组索引的值设置为count函数的结果。我已阅读有关count函数的API,但在尝试将我的参数传递给所述count函数时,我一直收到expression must have class type错误。

到目前为止,这是我的代码:

#include <iostream>
#include <limits>
#include <algorithm>
#include <array>

using namespace std;

int main(){

    const size_t ARRAY_SIZE = 400;
    int totalElements;
    cout << "How many grades will you be entering?: ";
    cin >> totalElements;

    int gradesArray[ARRAY_SIZE];
    for(int i = 0; i < totalElements; i++){
        cout << "Please enter a grade: ";
        cin >> gradesArray[i];
    }
    //to be incrimented with each count of a certain grade, from 0-5
    int countOfGrades[6] = {0, 0, 0, 0, 0, 0};

    countOfGrades[0] = count(gradesArray.begin(),gradesArray.end(),0);

    return 0;

}//end of main

3 个答案:

答案 0 :(得分:2)

数组不是向量,它们没有begin()end()函数(或任何成员函数;它们不是类类型!)

但是,您可以使用std::beginstd::end,或者只传递数组和最后一个元素的地址+ 1.

答案 1 :(得分:1)

数组没有开始和结束方法,也许你想要std::vector。或者只是传递指针,它遵循count所需的迭代器接口。

count(gradesArray, gradesArray + ARRAY_SIZE, 0);

答案 2 :(得分:0)

std::beginstd::end非成员函数,可以使用容器或数组。 container.begin()container.end()成员函数。常规数组没有任何成员函数。由于您具有支持C ++ 11的编译器,因此没有理由使用原始数组。首选std::arraystd::vector

std::array<int, ARRAY_SIZE> gradesArray;