Det är en kvarleva från C att arrayer ofta fungerar som pekare, så arr+size
tar en pekare till arr
och ökar den med size
element. Resultatet blir då en pekare till addressen efter det sista elementet i arrayen.
Istället för att använda pekararitmetik så kan man i det här fallet använda std::begin
och std::end
istället:
sum = std::accumulate(std::begin(arr), std::end(arr), sum);
Detta fungerar med både C-arrayer och C++-datastrukturer som std::array och std::vector.
Jag kan för övrigt tipsa om Learn C++ om du vill lära dig C++, det är en av de bästa sidorna för att lära sig "korrekt" C++.