首页 > 解决方案 > C++ 检查 unordered_set 中的属性值而不是整个对象

问题描述

我有一个std::unordered_setstd::unique_ptr指针指向包含 a 的节点std::array<2, int>,表示 2d 位置。在下面代码指定的集合中的插入

struct VectorHash {
    size_t operator()(const std::unique_ptr<Node>& ptr) const {
        std::hash<int> hasher;
        size_t seed = 0;
        for (int i : ptr->position) {
            seed ^= hasher(i) + 0x9e3779b9 + (seed<<6) + (seed>>2);
        }
        return seed;
    }
};

假设我有一个位置,我想检查是否有任何std::unique_ptrs 具有相同的位置,我必须进行暴力搜索还是我可以以某种方式使用散列函数进行查找?我认为这可能是可能的,因为位置有点成为关键,还是我错了?提前致谢

标签: c++sortinglookupunique-ptrunordered-set

解决方案


推荐阅读