将多个矩阵(GSL)存储在地图中
Store multiple matrices (GSL) in an map
我有多个我想存储在某些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
如何最好地复制这?
首先,我不是C 程序员!
但是,我很确定您要做的是将地图的值指定为gsl_matrix *
。以下编译没有任何错误,但是我认为您可能需要实现std::map
操作员。
#include <map>
#include <stdio.h>
#include <stdio.h>
#include <gsl/gsl_matrix.h>
int
main (void)
{
int i;
int j;
std::map<int, gsl_matrix *> 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;
}
然后编译:
g++ -o test test.cpp -lgsl -lgslcblas
我希望这会有所帮助!
相关文章:
- 在地图中使用自定义删除器存储unique_ptr
- 地图是否将元素存储为 std::p air?
- 无法调用未来::获取存储在地图中的未来
- 按unique_pointer将传递的对象存储在地图中
- 需要知道如何从本机 HAL 将地图存储在 android 持久内存中
- C++ 在地图中存储变体类型
- 如何高效/正确地存储等距游戏的不同类(单个超类的所有子类型)的地图?
- 在地图中存储的类中调用功能
- 如何在给定任意数量的整数的情况下创建一个唯一键?并使用该键存储,然后从地图中查找
- 简单的 CPP 地图存储和访问无法按预期工作
- 无法访问/存储地图中的游戏状态对象
- 使用什么数据结构来存储基于游戏对象的二维单元地图?
- 将数据存储到地图
- 更新存储在地图中的向量的向量
- 将多个矩阵(GSL)存储在地图中
- 如何在地图中正确存储 LPTSTR
- 如何使用矢量或地图存储不同角色的位置
- 来自存储在带有基类类型的地图中的派生类的调用函数
- 有没有办法从点云和深度数据构建和存储3D地图
- 分割故障(核心倾倒)在使用地图存储有序数据时