什么类型的数据结构对于搜索进程表是有效的

时间:2010-02-07 04:37:05

标签: c++ linux data-structures

我必须搜索一个进程表,该进程表由在给定ip地址集上运行的进程的名称填充。 目前我在C ++中使用multimaps,进程名称为密钥,ip地址为值。 是否有任何其他有效的数据结构可以完成相同的任务。 我也可以通过使用pthreads获得任何类型的并行性吗?如果是这样,任何人都可以指出我正确的方向

3 个答案:

答案 0 :(得分:1)

您不需要并行来访问数千个条目的RAM中的数据结构。您可以锁定它(确保当时只有一个进程/线程访问它),并确保访问足够。 Multimap没问题。虽然哈希图会更好。

答案 1 :(得分:1)

您桌子的典型查询是什么?

尝试使用hashmap,对于大表来说可能更快。

如何存储名称和IP? UTF,string,char *?是作为uint32还是字符串?

对于具有大量读取查询的只读结构,您可以从多个线程中受益。

upd:使用std::unordered_multimap

中的#include <tr1/unordered_map>

答案 2 :(得分:0)

根据表的大小,您可能会发现哈希表比multimap容器(使用平衡二叉树实现)更有效。

hash_multimap数据结构实现了哈希表STL容器,可能对您有用。