SGI hash_map:基本咨询



我是SGI hash_map和C++语言的新手,所以请耐心等待。我正在尝试弄清楚如何初始化基本hash_map并从中插入和删除。

我宣布hash_map如下:

Sgi::hash_map<int, Process*> ProcessManager::ListProcesses;

我打算按 int 值进行哈希处理并存储指向类 Process 对象的指针。

然而,SGI的文件非常模糊和无益。我正在通读hash_map文件,但也不了解其中。有人可以告诉我在SGI hash_map中插入和擦除的正确方法吗?

需要明确的是:我正在寻找一个可以学习的基本示例。请,谢谢!

SGI 文档中的示例有什么问题? 它清楚地显示了如何声明hash_map以及如何向其添加值。

hash_map<const char*, int, hash<const char*>, eqstr> months;
months["january"] = 31;
months["february"] = 28;
months["march"] = 31;

该变量months是一个使用类型为 const char* 的键并将它们映射到类型 int 的值的hash_map,并且由于您不想通过比较相等的指针值来比较键,因此它使用名为 eqstr 的自定义相等函子,该函子表示两个const char*字符串是否具有相同的内容。

要擦除,请使用erase成员功能,疯狂的嗯。

size_type erase(const key_type& k) 擦除键为 k 的元素。

所以这将是:

months.erase("march");

SGI的文件远非含糊不清。

您可以执行以下操作。

Sgi::hash_map<int, Process*> ListProcesses;
Process *p1; // Initialize these
Process *p2;
//Insertion
ListProcesses[10] = p1;  // new element inserted
ListProcesses[20] = p2;  // new element inserted
//Erase
ListProcesses.erase(20);  //(20,p2) deleted

正如ildjarn所评论的,你可以使用std::unordered_map<>而不是SGI的。

相关内容

  • 没有找到相关文章

最新更新