[ https://issues.apache.org/jira/browse/THRIFT-2062?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14161938#comment-14161938 ]
Konrad Grochowski commented on THRIFT-2062: ------------------------------------------- just a note: for user defined types (structs) user has to provide it's own implementation of std::hash I'm not sure, but code above could not compile do to problems in operator< > cpp flag for using unordered_set instead of set > ----------------------------------------------- > > Key: THRIFT-2062 > URL: https://issues.apache.org/jira/browse/THRIFT-2062 > Project: Thrift > Issue Type: Improvement > Components: C++ - Compiler > Reporter: Vitali Lovich > > It would be nice if the cpp compiler could generate code to use unordered_set > instead of set. unordered_set is faster & usually an unordered_set is wanted > rather than an ordered one. Furthermore, since unordered_set only needs a > hash function, we could generate one for every type. > The hash code generated can be along the lines of what Eclipse does for > auto-generated hash codes: > struct ThriftObj { > 1: string f1; > 2: i32 f2; > 3: SomeOtherThriftObj f3; > } > // header file: > namespace std { > template <> struct hash<ThriftObj> { > size_t operator()(const ThriftObj& o); > } > } > // cpp file: > namespace std { > template <> struct hash<ThriftObj> { > size_t operator()(const ThriftObj& o) > constexpr size_t prime = 31; > size_t hashcode = 1; > hashcode += o.__isset.f1 ? prime * > std::hash<decltype(o.f1)>()(o.f1) : 0; > hashcode += o.__isset.f2 ? prime * > std::hash<decltype(o.f1)>()(o.f2) : 0; > hashcode += o.__isset.f3 ? prime * > std::hash<decltype(o.f1)>()(o.f3) : 0; > } > } > } -- This message was sent by Atlassian JIRA (v6.3.4#6332)