Einsetzen in unordered_set mit custom-hash-Funktion

Ich habe den folgenden code, um eine unordered_set<Interval>. Dies stellt in Ordnung.

struct Interval {
  unsigned int begin;
  unsigned int end;
  bool updated;   //true if concat.  initially false
  int patternIndex;  //pattern index. valid for single pattern
  int proteinIndex;   //protein index.  for retrieving the pattern
};

struct Hash {
  size_t operator()(const Interval &interval);
};


size_t Hash::operator()(const Interval &interval){
  string temp = to_string(interval.begin) + to_string(interval.end) + to_string(interval.proteinIndex);
  return hash<string>()(temp);
}

unordered_set<Interval, string, Hash> test;

Aber ich kann nicht kompiliert wenn ich versuche, einfügen mit diesem code:

  for(list<Interval>::iterator i = concat.begin(); i != concat.end(); ++i){
    test.insert((*i));
  }

Außerdem kann ich nicht feststellen, was das problem ist aus den Fehlermeldungen.

Hier ist ein Beispiel:

note: candidate is:
note: size_t Hash::operator()(const Interval&)
note:   candidate expects 1 argument, 2 provided  

Dachte ich, dass ich nur 1 argument...

Erkennt jemand ein problem mit meinem code einfügen? Bitte helfen Sie, wenn Sie können - ich habe auf der Suche nach einer Lösung für eine ganze Weile jetzt.

EDIT:

Hier ist die neue Instanziierung code: unordered_set<Interval, Hash> test;
Ich bin aber immer noch erhalten eine Reihe von Fehlermeldungen. Ex:

note: candidate is:
note: size_t Hash::operator()(const Interval&) <near match>
note:   no known conversion for implicit this parameter from const Hash*’ to Hash*’

InformationsquelleAutor der Frage user2052561 | 2013-04-07

Schreibe einen Kommentar