finden struct Vektor

Ich möchte zu finden eine Struktur, die in einen Vektor, aber ich habe einige Probleme. Ich lese mehrere Beiträge dazu, aber diese alle suchen für ein element der Struktur struct: ich möchte in der Lage sein zu vergleichen mehrere Elemente der Struktur struct während der Suche. Mein struct und vector sind definiert als:

struct subscription {
    int tournamentid;
    int sessionid;
    int matchid;

    bool operator==(const subscription& m) const {
        return ((m.matchid == matchid)&&(m.sessionid==sessionid)&&(m.tournamentid==tournamentid));
    }
};

vector<subscription> subscriptions;

Dann will ich Suche für eine Struktur, die in der Vektor-Abonnements, aber da die Kombination von sessionid und matchid ist einzigartig, ich brauche zu suchen Sie nach. Der Suche nach nur einer Folge mehrere Ergebnisse.

    subscription match;
    match.tournamentid = 54253876;
    match.sessionid = 56066789;
    match.matchid = 1108;
    subscriptions.push_back(match);

    it = find(subscriptions.begin(), subscriptions.end(), match);

Finden " - Funktion geben Sie den folgenden Fehler beim kompilieren:

main.cpp:245:68: Fehler: no match for 'operator=' in 'it = std::find [mit _IIter = __gnu_cxx::__normal_iterator >, _Tp = echo_client_handler::subscription](((echo_client_handler*)this)->echo_client_handler::subscriptions.std::vector<_Tp, _Alloc>::begin with _Tp = echo_client_handler::Abonnement, _Alloc = std::allocator, std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator >, typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer = echo_client_handler::Abonnement*, ((echo_client_handler*)diese)->echo_client_handler::Abonnements.std::vector<_Tp, _Alloc>::end with _Tp = echo_client_handler::Abonnement, _Alloc = std::allocator, std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator >, typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer = echo_client_handler::Abonnement*, (*(const echo_client_handler::Abo*)(& match)))'

Und eine GANZE Menge mehr 🙂 Also der Betreiber ist nicht richtig definiert, aber wie soll das gemacht werden? Kann mir jemand helfen? Wie suchen für mehrere Elemente statt nur einem element in einem struct?

  • Können Sie veröffentlichen Sie code in so etwas wie ideone.com ? dieser code kompiliert bei mir auf VC10.
  • Dein code ist nicht vollständig. Was ist die definition von it?
  • Könnten Sie bitte zeigen, die Erklärung der it?
  • Ich nahm an, das Sie definiert haben it als vector<subscription>::iterator..habt Ihr das getan?
  • Blöder Fehler... ich definierte es als vector<int>::iterator it;... vielen Dank für zeigt mir den Fehler!
  • Fein gearbeitet: ideone.com/3aZXl

InformationsquelleAutor Rogier | 2012-07-05
Schreibe einen Kommentar