这是我的数组:
std::array<int, 4> mark;
Run Code Online (Sandbox Code Playgroud)
这是我有的一个功能:
float getAverage() {
float sum = 0;
sum = std::accumulate(mark, mark + mark.size(), 0);
return sum /= mark.size();
}
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
Invalid operands to binary expression ('std::array<int, markAmount>' and 'std::__1::array::size_type' (aka 'unsigned long'))
Run Code Online (Sandbox Code Playgroud)
这是可以理解的,因为mark和mark.size()有不同的类型,但我不明白如何以其他方式制作它。我应该转换他们的类型吗?但为什么它不自动生成呢?类似于?array &array[0]因为这就是我所需要的std::accumulate。
与内置的 C 样式数组不同,std::array它不会自动衰减为指向其第一个元素的指针。使用std::begin和std::end获取迭代器(在本例中为原始指针):
std::accumulate(std::begin(mark), std::end(mark), 0);
Run Code Online (Sandbox Code Playgroud)
或成员函数.begin()和.end().
| 归档时间: |
|
| 查看次数: |
3170 次 |
| 最近记录: |