什么是用于按索引访问的良好的未定义大小的数据结构?

时间:2014-05-21 13:06:48

标签: c++ containers std

我需要一些支持以下内容的未知大小的数据结构:

  • 按索引推送数据。也就是说,每个项目都包含两件事:一个索引(可能不是连续的。即1,3,7 ......),还有一个名为data的东西:

    struct data
    {
        float par[PARAMETERS];
        int cluster;
        bool visited;
        bool noise;
    };
    

    所以数据推送看起来像这样:

    data d;
    //some work on d...
    temp.i = 2;
    temp.data = d;
    vec.pushback(temp);
    
  • 索引可访问性。也就是说,向量名为vec,然后我希望能够通过vec[i]访问它。例如:

    vec[i].visited = true;
    

编辑(其他功能):

  • 我还需要为每个索引插入多个数据。我的意思是,如果我插入一些索引和数据并且索引已经存在,那么我希望它只是将数据附加到该索引。

我想到了int和data的向量:

typedef std::vector<int,data> Vec;

但这并不支持Vec索引访问int

第二个想法是地图矢量:

typedef std::vector<std::map<int,data>> Vec;

但这也不支持索引访问。

2 个答案:

答案 0 :(得分:2)

为什么不只使用普通地图?

例如,typedef std::map<int,data> myMap;

我认为不需要比这更漂亮的东西。

答案 1 :(得分:0)

哈希映射怎么样? data将是您的结构的名称。每个索引都将映射到data的唯一实例。

std::hash_map<int, data>