我有下面的数据序列要存储到C++容器.
Type1 -> Channel 0 -> Data1 -> Value
-> Data2 -> Value
-> Data3 -> Value
Channel 1 -> Data1 -> Value
-> Data2 -> Value
-> Data3 -> Value
Channel 2 -> Data1 -> Value
-> Data2 -> Value
-> Data3 -> Value
Type2 -> Channel 0 -> Data1 -> Value
-> Data2 -> Value
Type3 -> Channel 0 -> Data1 -> Value
-> Data2 -> Value
Channel 1 -> Data1 -> Value
-> Data2 -> Value
在容器中存储的最佳方法是什么。我们使用C++14。
提前感谢!!
我试过下面的Map:
std::map<std::string,std::map<int,std::map<std::string, int>>> DataMap;
有没有什么优化的方法可以做到这一点?
1条答案
按热度按时间sy5wg1nm1#
好吧,“最好的”取决于具体情况,你没有解释你的问题,也没有解释你的数据的特征,但是你的方法在其他性能问题中往往会有很大的影响。
我建议使用std::multimap,如果你不需要元素按“Type”排序,那么使用std::unordered_multimap更好。然后使用lower_bound或equal_range,你将访问每种类型的所有数据。对于数据本身,你可以使用一个带有channel/dataname/value的struct。同样,你没有解释你的问题的特征,但是假设DataX是某种属性,我将使用一个外部string/intMap来减少内存占用。
假设类型很多而每种类型的数据很少的问题的示例:
...使用外部Map