我正在处理一个数据结构,输入数据非常大,几乎有1TB。我需要将数据加载到关联容器中。
数据中存在一些重复的记录,所以我正在使用multimap,但有人建议我使用map of vector而不是使用multimap。从性能方面来说,这两者有何区别?
map<const char*, const char*, cmptr> mulmap;
map <const char*, vector <const char*> ,cmptr> mmap;
我正在处理一个数据结构,输入数据非常大,几乎有1TB。我需要将数据加载到关联容器中。
数据中存在一些重复的记录,所以我正在使用multimap,但有人建议我使用map of vector而不是使用multimap。从性能方面来说,这两者有何区别?
map<const char*, const char*, cmptr> mulmap;
map <const char*, vector <const char*> ,cmptr> mmap;
map
还是 multimap
。假设箱子的数量为 N,每个箱子平均包含 M 个物品。
std::multimap<Key, Val>
通常使用带有重复键的 RB 树实现。
std::map<Key, std::vector<Val>>
通常使用唯一键的 RB 树实现。
但是,两种存储方式的存储都受到 RAM 的限制。 对于大多数系统来说,1 TB 是不可行的,并且我听说没有任何支持它的主板。
对于1TB数据,最好使用数据库,几乎可以选择任何数据库来完成此任务。 Kyoto Cabinet 简单易用,符合你的需求,但你也可以使用 PostgreSQL、MySQL、Sqlite、Dynamo、Redis、MongoDB、Cassandra、Voldemort 等。
std::
。 - Dietrich Epp
const char*
作为键,您必须同时提供一个比较谓词才能使其工作。使用std::map<std::string, std::string>
可能更容易些。 - Olaf Dietscheconst char*
作为字符串,如果您想使用字符串,请改用std::string
。拜托了! - Mark Garcia