Как реализовать операции одномерного и двумерного массива?
Есть некая функция, которая должна реализовать следующую формулу: есть двумерный вектор: [1 2][3 4][5 6] и одномерный вектор равный количеству строк (3) и 2 коэффициента (7 и 8). Каждую строчку двумерного массива нужно умножить на определенные коэффициенты и сложить числа строки Например, первый элемент одномерного нужно найти следующим образом: S[1]=1x7+2x8 S[2]=3x7+4x8 и тд Как это реализовать? Мой способ не работает
std::vector<double> Sums(std::vector<std::vector<double>> pattern, int m, double a1, double a2) {
std::vector<double> S;
for (int i = 0; i < m; i++) {
S[i] = a1 * pattern[i][0] + a2 * pattern[i][1];
}
return S;
}
Ответы (1 шт):
Строчкой:
std::vector<double> S;
Вы не выделяете память под элементы, но пытаетесь присвоить i-му элементу значение.
S[i] = a1 * pattern[i][0] + a2 * pattern[i][1];
Вам нужно или изначально выделить память под m элементов.
Например вот так:
std::vector<double> S(m);
Или не изменять значения i-го элемента, а добавлять в вектор элемент.
Например вот так:
S.push_back(a1 * pattern[i][0] + a2 * pattern[i][1]);