小编sco*_*sul的帖子

在c ++中声明unordered_set的哈希函数?

我必须将unordered_set用于一个相当大的项目,并确保我正确使用它,我尝试了一个小例子.

#include <iostream>
#include <unordered_set>
using namespace std;

class Foo {
  private:
    int x;
  public:
    Foo(int in) {x = in;}
    bool operator==(const Foo& foo) const {return x == foo.x;}
    size_t hash(const Foo& foo) const {return x;}
};

int main() {
  Foo f1(3);
  unordered_set<Foo> s;
  s.insert(f1);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我得到:

/tmp/cc3KFIf4.o: In function `std::__detail::_Hash_code_base<Foo, Foo, std::_Identity<Foo>, std::equal_to<Foo>, std::hash<Foo>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, false>::_M_hash_code(Foo const&) const':
hashset.cc:(.text._ZNKSt8__detail15_Hash_code_baseI3FooS1_St9_IdentityIS1_ESt8equal_toIS1_ESt4hashIS1_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE12_M_hash_codeERKS1_[std::__detail::_Hash_code_base<Foo, Foo, std::_Identity<Foo>, std::equal_to<Foo>, std::hash<Foo>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, false>::_M_hash_code(Foo const&) const]+0x19): undefined reference to `std::hash<Foo>::operator()(Foo) const'
/tmp/cc3KFIf4.o: In function …
Run Code Online (Sandbox Code Playgroud)

c++ hash unordered-set

5
推荐指数
1
解决办法
6323
查看次数

如何使用Python的正则表达式匹配下划线?

我在使用正则表达式匹配 Python 中的下划线字符时遇到问题。只是在 shell 中玩耍,我得到:

>>> import re
>>> re.match(r'a', 'abc')
<_sre.SRE_Match object at 0xb746a368>
>>> re.match(r'_', 'ab_c')
>>> re.match(r'[_]', 'ab_c')
>>> re.match(r'\_', 'ab_c')
Run Code Online (Sandbox Code Playgroud)

我预计其中至少有一个会返回一个匹配对象。难道我做错了什么?

python regex

4
推荐指数
1
解决办法
3万
查看次数

标签 统计

c++ ×1

hash ×1

python ×1

regex ×1

unordered-set ×1