У меня есть несколько матриц, которые я хотел бы сохранить в каком-то объекте c/c++. Я все еще очень новичок в c/c++, но мне сказали, что это один из способов сделать это.
- Создать карту
- Хранить матрицы по ключам карты
Вот почти рабочий MWE (если бы он работал, мне не нужно было бы задавать этот вопрос):
#include <map>
#include <stdio.h>
#include <stdio.h>
#include <gsl/gsl_matrix.h>
int
main (void)
{
int i, j;
std::map<int,double> test;
gsl_matrix * m = gsl_matrix_alloc (10, 3);
for (i = 0; i < 10; i++)
for (j = 0; j < 3; j++)
gsl_matrix_set (m, i, j, 0.23 + 100*i + j);
// store in map
test[1] = m;
gsl_matrix_free (m);
return 0;
}
Я становлюсь неуверенным (и возникает ошибка) в этой строке:
std::map<int,double> test;
потому что gsl_matrix
— это структура, и я считаю, что это несовместимо с тем, что я хочу сделать. Ошибка гласит:
cannot convert gsl_matrix* to std::map<int, double>::mapped_type {aka double} in assignment
Если быть точным, то, что я хочу сделать, похоже на python, где мы можем просто хранить объекты в словарях следующим образом:
import numpy as np
test = {}
test['a'] = np.array([[1,2],[2,3]])
test['b'] = np.array([[1,2],[3,3]])
test['c'] = np.array([[1,3],[5,3]])
test['d'] = np.array([[1,5],[6,3]])
.
.
.
Как это лучше всего воспроизвести с помощью gsl
?