所以我只是试图将给定数组索引的值设置为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
答案 0 :(得分:2)
数组不是向量,它们没有begin()
或end()
函数(或任何成员函数;它们不是类类型!)
但是,您可以使用std::begin
和std::end
,或者只传递数组和最后一个元素的地址+ 1.
答案 1 :(得分:1)
数组没有开始和结束方法,也许你想要std::vector
。或者只是传递指针,它遵循count所需的迭代器接口。
count(gradesArray, gradesArray + ARRAY_SIZE, 0);
答案 2 :(得分:0)
std::begin
和std::end
是非成员函数,可以使用容器或数组。 container.begin()
和container.end()
是成员函数。常规数组没有任何成员函数。由于您具有支持C ++ 11的编译器,因此没有理由使用原始数组。首选std::array
或std::vector
。
std::array<int, ARRAY_SIZE> gradesArray;