Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Ermitteln der Keys einer Multimap in C++

  1. #1
    Registrierter Benutzer
    Registriert seit
    21.06.1999
    Beiträge
    677

    Ermitteln der Keys einer Multimap in C++

    Hallo,

    weiss jemand, wie man nur über die Keys in eine STL multimap iterieren kann?

    Der Iterator lieferet immer alle (Key, Value) Paare zurück. Ich bin mir allerdings nicht sicher, ob die geordnet sind, so dass gleiche Keys immer aufeinanderfolgen; dann könnte man Gruppenwechsel bei wechselnden Keys machen (was zwar nicht elegant, aber eine Lösung meines Problems wäre).

  2. #2
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    weiss jemand, wie man nur über die Keys in eine STL multimap iterieren kann?
    Der Iterator lieferet immer alle (Key, Value) Paare zurück. Ich bin mir allerdings nicht sicher, ob die geordnet sind, so dass gleiche Keys immer aufeinanderfolgen;
    Ich weiß zwar nicht was letzteres mit der Frage zu tun hat, aber gleich Keys folgen jedenfalls aufeinander.
    Der Standard sagt insbesondere über multimap dieses:
    "
    The fundamental property of iterators of associative containers is that they iterate through the containers in
    the non-descending order of keys where non-descending is defined by the comparison that was used to con-
    struct them. For any two dereferenceable iterators i and j such that distance from i to j is positive,
    value_comp(*j, *i) == false
    For associative containers with unique keys the stronger condition holds,
    value_comp(*i, *j) != false.
    "

  3. #3
    Registrierter Benutzer
    Registriert seit
    21.06.1999
    Beiträge
    677
    Zitat Zitat von locus vivendi
    Ich weiß zwar nicht was letzteres mit der Frage zu tun hat, aber gleich Keys folgen jedenfalls aufeinander.
    Danke für die Info, die ich im Stroustrup irgendwie nicht gefunden habe.

    Das hat insofern was mit der Frage zu tun, als ich dann weiss das die Menge der Values zum selben Key vollständig vorkam, sobald der Key wechselt. Und damit kann ich dann über die einzelnen Keys iterieren.

  4. #4
    Registrierter Benutzer
    Registriert seit
    21.06.1999
    Beiträge
    677
    Und hier zur Info die Lösung wie man nur über die Keys iteriert:
    Code:
    multimap<int,int> m;
    multimap<int,int>::iterator i;
    for (i = m.begin(); i != m.end(); i = m.upper_bound(i->first)) {
         // do some stuff with key i->first
    }

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •