C++ 什么类型的数据结构可以有效地搜索流程表
我必须搜索一个进程表,该表由一组给定ip地址上运行的进程的名称填充。 当前我在C++中使用MultuMaPS,以进程名为关键字,IP地址作为值。 有没有其他有效的数据结构可以完成同样的任务。C++ 什么类型的数据结构可以有效地搜索流程表,c++,linux,data-structures,C++,Linux,Data Structures,我必须搜索一个进程表,该表由一组给定ip地址上运行的进程的名称填充。 当前我在C++中使用MultuMaPS,以进程名为关键字,IP地址作为值。 有没有其他有效的数据结构可以完成同样的任务。 我还可以通过使用pthreads获得任何类型的并行性吗?如果是这样的话,谁能给我指出一个正确的方向您不需要并行性来访问RAM中数千个条目的数据结构。您可以锁定它(确保一次只有一个进程/线程访问它),并确保访问足够。多重映射是可以的。不过hashmap会更好。对表的典型查询是什么 尝试使用hashmap,它可
我还可以通过使用pthreads获得任何类型的并行性吗?如果是这样的话,谁能给我指出一个正确的方向您不需要并行性来访问RAM中数千个条目的数据结构。您可以锁定它(确保一次只有一个进程/线程访问它),并确保访问足够。多重映射是可以的。不过hashmap会更好。对表的典型查询是什么 尝试使用hashmap,它可以更快地用于大型表 如何存储名称和IP?UTF,字符串,字符*?Ip作为uint32还是字符串 对于具有大量读取查询的只读结构,您可以从多个线程中获益
upd:使用
std::unordered_multimap
from#include
根据表的大小,您可能会发现哈希表比multimap
容器(使用平衡二叉树实现)更有效
数据结构实现了一个哈希表STL容器,可能对您有用。典型的查询是查找某个进程是否正在运行。。如果运行报告IP地址使用GXC 4.1和EXT在GCC 4.4和新GCC(例如,4.4)中使用的STD:GHUUXCX::HASHMultIMAP:ST1: IMPLI/unOrdEDIDMAP文件“无序”的多MULTAP(代码)> Tr1/OrdEdEdEXMAP/< COD>不Tr1IIMPL,SRYRY是GNU编译器或Linux下可用的HASMAP,它是C++ STDLIB,意思是它在标准C++库的任何地方都是可用的。这意味着实际上所有符合C++标准的编译器都不适合于C++(在1998和2003的修订版中)。它们将包含在下一个C++标准C++ 0x中。GCC在其libstdc++中实现了预标准tr1,类名
unordered\u multimap
。还有非标准的ext变量:hash\u multimap
是的,它给出了很多警告信息。。。我还检查了backward_warning.h中的替换头文件,但它仍然在编译时发出警告。问题是我无法提交生成警告的代码有没有办法消除警告你有什么gcc?使用tr1\u impl/unordered\u映射中的std::unordered\u多重映射