#include <array>
#include <cstddef>
#include <iostream>

int main() {
    std::array<int, 5> readings{3, 1, 4, 1, 5};
    int total{0};
    std::cout << "index\n";
    for (std::size_t i{0}; i < readings.size(); ++i) {
        total += readings[i];
        std::cout << total << '\n';
    }
    total = 0;
    std::cout << "iterator\n";
    for (auto position = readings.begin(); position != readings.end(); ++position) {
        total += *position;
        std::cout << total << '\n';
    }
    total = 0;
    std::cout << "range\n";
    for (const auto& reading : readings) {
        total += reading;
        std::cout << total << '\n';
    }

    const std::array<int, 0> empty{};
    int empty_total{0};
    for (const auto& reading : empty) {
        empty_total += reading;
    }
    const std::array<int, 1> single{5};
    int single_total{0};
    for (const auto& reading : single) {
        single_total += reading;
    }
    std::cout << "empty " << empty_total << '\n';
    std::cout << "single " << single_total << '\n';

    for (auto& reading : readings) {
        reading += 2;
    }
    int calibrated{0};
    for (const auto& reading : readings) {
        calibrated += reading;
    }
    std::cout << "calibrated " << calibrated << '\n';
    return 0;
}
