嵌套地图是正常做法还是非常糟糕?

时间:2011-03-30 17:19:09

标签: c++ stl map

将地图嵌套在几个级别是正常的做法还是非常糟糕?

        // name property     // name singal         // interval of Ranges      // values

typedef std::map<std::string, std::map<std::string, std::map<RangeSignalValue, std::string > > > sgHashSignals;

4 个答案:

答案 0 :(得分:10)

我当然已经这样做了。但是,我将定义分解为易消化的块:

typedef std::map<RangeSignalValue, std::string> RangeIntervalMap; 
typedef std::map<std::string, RangeIntervalMap> NameSignalMap;
typedef std::map<std::string, NameSignalMap>    NamePropertyMap;

答案 1 :(得分:2)

如果在你正在工作的环境中有意义,那么我看不出任何问题,除了它可能难以阅读。是否可以使用typedef使这些嵌套地图更容易理解?

答案 2 :(得分:1)

例如:

typedef std::map<RangeSignalValue, std::string> RangesValues;

typedef std::map<std::string, std::map<std::string, RangesValues > > sgHashSignals;

答案 3 :(得分:0)

最大的问题是查找比其他选项略慢:

           // property+signal, concatenated // interval of Ranges    // values

typedef std::map<std::string, std::map<RangeSignalValue, std::string > > sgHashSignals;

但是,准确地说,如何连接前两个字符串取决于它们的语法。

这将两个字符串查找替换为一个。缺点是它需要更多的内存。