将地图嵌套在几个级别是正常的做法还是非常糟糕?
// name property // name singal // interval of Ranges // values
typedef std::map<std::string, std::map<std::string, std::map<RangeSignalValue, std::string > > > sgHashSignals;
答案 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;
但是,准确地说,如何连接前两个字符串取决于它们的语法。
这将两个字符串查找替换为一个。缺点是它需要更多的内存。