首页 > 解决方案 > 使用 std::accumulate 查找数组的总和

问题描述

这是我的数组:

std::array<int, 4> mark;

这是我的一个功能:

float getAverage() {
        float sum = 0;
        sum = std::accumulate(mark, mark + mark.size(), 0);
        return sum /= mark.size();
    }

但我收到以下错误:

Invalid operands to binary expression ('std::array<int, markAmount>' and 'std::__1::array::size_type' (aka 'unsigned long'))

这是可以理解的,因为mark并且mark.size()有不同的类型,但我不明白如何以其他方式制作它。我应该转换他们的类型吗?但为什么它不是自动生成的?array类似于&array[0]? _ 因为这是我需要的std::accumulate

标签: c++

解决方案


与内置的 C 样式数组不同,std::array它不会自动衰减到指向其第一个元素的指针。使用std::beginandstd::end获取迭代器(在这种情况下为原始指针):

std::accumulate(std::begin(mark), std::end(mark), 0);

或成员函数.begin().end()


推荐阅读