我有很多物体(大约30k)。存储和访问它们的最佳方法是什么?它们都有一个特定的ID,但我也想使用它们的名称,类别等进行过滤和搜索。这是一个非常简单的类,类似于以下内容:
class objclass {
int id;
std::string name;
...
}
我当时在考虑SQL,但是我不知道那是最好的方法。
提前致谢!:)
更新:Thx伙计们!我想我接下来要讲向量。并澄清了30k并不那么大^^对我来说,从来没有处理过如此大量的数据,这似乎是很大的;)
std::vector
听起来很合适。如果您事先知道获得了多少个元素,请使用vector::reserve
或vector::resize
不进行总体分配。否则,请vector::shrink_to_fit
在大量插入后使用。
要加快对的搜索id
,请对其进行排序vector
并使用binary_search/lower_bound
。
如果您有很多内容相同的字符串,请使用flyweight类。这也可以大大加快字符串比较的速度。
要快速搜索字符串成员,vector
请将a迭代器放入您的容器中并对其进行排序,或者使用boost::multi_index
。
一个小的计算就可以证明这一点:假设int
是4个字节,则字符串平均20个字母,30000个元素,大约需要2兆字节。完全不用担心。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句