Как добавить все числа в массив в С++?

Вместо ввода

array[0] + array[1] //.....(and so on)

Есть ли способ добавить все числа в массив? Язык, который я использую, будет С++ Я хочу иметь возможность сделать это с меньшим количеством ввода текста, чем если бы я просто набрал все это.

Ответ 1

Попробуйте следующее:

int array[] = {3, 2, 1, 4};
int sum = 0;

for (int i = 0; i < 4; i++) {
    sum = sum + array[i];
}
std::cout << sum << std::endl;

Ответ 2

Вот идиоматический способ сделать это в С++:

int a[] = {1, 3, 5, 7, 9};
int total = accumulate(begin(a), end(a), 0, plus<int>());

Демоверсия

Ответ 3

Скажем, у вас есть int array[N].

Вы можете просто сделать:

int sum = 0;
for(auto& num : array)
    sum += num;

Ответ 4

Если вы используете valarray, для этого есть функция-член sum().

#include <iostream>     // std::cout
#include <valarray>     // std::valarray

int main () {
  std::valarray<int> myvalarray(4);
  myvalarray[0] = 0;
  myvalarray[1] = 10;
  myvalarray[2] = 20;
  myvalarray[3] = 30;
  std::cout << "The sum is " << myvalarray.sum() << '\n';

  return 0;
}

Ответ 5

Самый простой способ сделать это - использовать цикл. Бонус заключается в том, что вы можете использовать его на любом целочисленном массиве, не переписывая много кода вообще. Я использую Java чаще, поэтому я надеюсь, что не так много синтаксических ошибок, но что-то вроде этого должно работать:

int addArray(int[] array, int length){
    int sum=0;
    for(int count=0;count<length;count++){
        sum+=array[count];
    }
    return sum;
}

Ответ 6

В С++ 17 можно использовать выражения сложения:

template<typename ...Ts>
int sum_impl(Ts&& ...a)
{
    return (a + ...);
}

Если sum_impl имело постоянное количество параметров, мы могли бы назвать его следующим образом:

std::apply(sum_impl, arr);

предполагая, что arr std::array<int, N>. Но поскольку он является вариационным, ему нужно немного нажать с помощниками:

using namespace std;

template <class Array, size_t... I>
int sum_impl(Array&& a, index_sequence<I...>)
{
        return sum_impl(get<I>(forward<Array>(a))...);
}

template <class Array>
int sum(Array&& a)
{
        return sum_impl(forward<Array>(a),
                        make_index_sequence<tuple_size_v<decay_t<Array>>>{});
}

Поэтому, предполагая, что эти помощники на месте, код будет выглядеть примерно так:

template<typename ...Ts>
int sum_impl(Ts&& ...a)
{
    return (a + ...);
}

int main()
{
    array<int, 10> arr{0,1,2,3,4,5,6,7,8,9};
    cout << sum(arr) << "\n";
    return 0;
}

Ответ 7

Мы можем использовать определенную пользователем функцию.

Фрагмент кода:

#include<bits/stdc++.h>
using namespace std;


int sum(int arr[], int n)
{
    int sum=0;

    for(int i=0; i<n; i++)
    {
        sum += arr[i];
    }
    return sum;
}


int main()
{
  int arr[] = {1, 2, 3, 4, 5};
  int n = distance(begin(arr), end(arr));

  int total = sum(arr,n);

  printf("%d", total);

  return 0;
}

Ответ 8

int Sum;
for(int& S: List) Sum += S;