我想在映射中存储我自己的一个类,键是 pthread_t 类型。(我类的每个对象都包含一个 pthread_t 数据成员,所以我希望每个实例都与该 pthread_t 作为键相关联, 在 map 中) 问题是 pthread_t 无法比较,只能与 pthread_equal 进行比较,所以我不能将它作为键放在映射中。
我看过unordered_map,但是我怎样才能为pthread_t实现一个hash函数呢?
直到现在我都考虑过使用 pthread_self() 来比较它们,但这也是不可能的,因为返回值是 pthread_t,而且我不想使用这只是 unsigned long int 的 typedef 这一事实。
如果无法使用某种映射,我如何将 pthread_t 的对象存储在容器中并使用 pthread_self() 函数快速找到它们?
最佳答案
它应该这样工作:
bool myCmp(const pthread_t &a, const pthread_t &b)
{
return memcmp(&a, &b, sizeof(pthread_t)) < 0;
}
map<pthread_t, myDataType, myCmp> myMap;
关于c++ - 使用 pthread_t 作为映射中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36530124/