将多个地图嵌套多层是常规做法还是非常糟糕的做法?
// name property // name singal // interval of Ranges // values
typedef std::map<std::string, std::map<std::string, std::map<RangeSignalValue, std::string > > > sgHashSignals;
将多个地图嵌套多层是常规做法还是非常糟糕的做法?
// name property // name singal // interval of Ranges // values
typedef std::map<std::string, std::map<std::string, std::map<RangeSignalValue, std::string > > > sgHashSignals;
我肯定已经做过这个。不过,我会将定义分解成易于理解的部分:
typedef std::map<RangeSignalValue, std::string> RangeIntervalMap;
typedef std::map<std::string, RangeIntervalMap> NameSignalMap;
typedef std::map<std::string, NameSignalMap> NamePropertyMap;
typedef
使一些嵌套映射更容易理解?typedef std::map<RangeSignalValue, std::string> RangesValues;
typedef std::map<std::string, std::map<std::string, RangesValues > > sgHashSignals;
最大的问题是查找速度比替代方案稍慢:
// property+signal, concatenated // interval of Ranges // values
typedef std::map<std::string, std::map<RangeSignalValue, std::string > > sgHashSignals;
如何连接这两个字符串取决于它们的语法。
这将用一个字符串查找替换两个字符串查找。缺点是它需要更多的内存。