Span

Последнее обновление: 07.03.2023
Упражнение 1

Напишите функцию, которая позволяет вычислить среднее арифметическое чисел в векторе std::vector<double> и массиве double[]. Чтобы не создавать для массива и вектора отдельные функции, используйте тип std::span<double>

Решение
#include <iostream>
#include <vector>
#include <span>

double average(std::span<double>);

int main()
{
    // используем массив
    double num_array[] { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 };
    std::cout << "Average of num_array: " << average(num_array) << std::endl;

    // используем вектор
    std::vector<double> num_vector{ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 };
    std::cout << "Average of num_vector: " << average(num_vector) << std::endl;
}

double average(std::span<double> data)
{
    double sum{};               // Accumulate total in here
    for (double val : data)
        sum += val;               // Sum array elements
    return sum / data.size();   // Return average
}

Консольный вывод:

Average of num_array: 5.5
Average of num_vector: 5.5
Дополнительные материалы
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850