我需要一个具有以下属性的数据结构:
如果您还使用C或C ++指导此结构的实现,那将是一件好事。
答案 0 :(得分:7)
您在寻找sparse matrix吗?
答案 1 :(得分:3)
检查一下 - 你可以将元素类型改为float
,如果这样可以做你想做的一切。
Concise Sparse Matrix Package in C
对于C ++,您可以使用Boost.uBLAS
- sparse_matrix详细信息here。
答案 2 :(得分:1)
如果你的X和Y相对较小,那么二维指针数组就可以了。在32位代码中,10000个指针将是40K。
答案 3 :(得分:1)
typdef ElementAccessor std::pair<int, int>;
struct Element
{
float f1;
float f2;
//etc.
};
std::map< ElementAccessor, Element > myElementMap;
您现在可以将此地图用作矩阵。 ElementAccessor引用x,y。只需确保在尝试访问该元素之前查看该元素是否存在,或者默认情况下创建一个元素。
http://www.cplusplus.com/reference/std/utility/pair/ http://www.cplusplus.com/reference/stl/map/find/
编辑:模板括号显示在地图上。 map键类型为ElementAccessor,值为Element。此外,对于该对,模板是int,int。