代码之家  ›  专栏  ›  技术社区  ›  Pavel

使用什么数据结构?

  •  5
  • Pavel  · 技术社区  · 14 年前

    我需要一个具有以下属性的数据结构:

    • 未添加的元素不应占用内存(理想情况下,空结构的大小接近于零)
    • 每个元素有两个整数坐标(x,y)(仅由它们访问元素)
    • 创建时已知元素的最大计数(超过10^3)
    • 元素包含少量浮点值

    如果你还指向C或C++中的这种结构的实现,那就更好了。

    4 回复  |  直到 14 年前
        1
  •  3
  •   Steve Townsend    14 年前

    检查一下-您可以将元素类型更改为 float 如果这是你想要的一切。

    Concise Sparse Matrix Package in C

    对于C++,你可以使用 Boost.uBLAS -稀疏矩阵细节 here .

        2
  •  7
  •   Victor Nicollet    14 年前
        3
  •  1
  •   Romain Hippeau    14 年前

        4
  •  1
  •   Steve Jessop    14 年前

    typdef ElementAccessor std::pair<int, int>;
    
    struct Element
    {
      float f1;
      float f2;
      //etc.
    
    };
    
    std::map< ElementAccessor, Element > myElementMap;
    

    现在可以使用此地图作为矩阵。element access or引用x,y。在尝试访问元素之前,请确保该元素是否存在于映射中,或者默认情况下创建了一个元素。

    http://www.cplusplus.com/reference/std/utility/pair/ http://www.cpluplus.com/reference/stl/map/find/

    编辑:显示地图的模板括号。映射键类型是ElementAccessor,值是Element。另外,对于这对,模板是int,int。