Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++]Iteracja map

Ostatnio zmodyfikowano 2014-04-05 11:14
Autor Wiadomość
Amakesh
Temat założony przez niniejszego użytkownika
[C++]Iteracja map
» 2014-04-02 21:44:29
Witam!

Mam problem z wydobyciem obiektów z mapy, potrzebuję wypisać w dowolnej kolejności zawartość mapy <int, int>. Problem może dla większości być błahy, jednak mam problemy ze wskaźnikami i z tego co widzę by dostać się do elementów mapy, potrzeba użyć iteratora, który przypomina wskaźniki.

kod:

C/C++
void w( vector < int > & tab ) {
    map < int, int > ilosc;
    for( int j = 0; j < tab.size(); ++j ) {
        cout << "element tablicy" << tab.at( j ) << endl;
        ilosc[ tab.at( j ) ] += 1;
    }
}
funkcja wypisuje elementy przyjmowanej tablicy i dodaje je do mapy pod indeksem wartości elementu tablicy, zaś wartości elementów mapy to ilość powtórzeń elementów tablicy (zliczam powtórzenia liczb w wektorze ).

Ewentualnie czy istnieje inny sposób wypisania wszystkich elementów mapy ?
P-107635
NikPL
» 2014-04-03 00:02:02
Z tego co mi się zdaje to mapa nie posiada operatora +=.
P-107637
waxx
» 2014-04-03 01:06:04
iterując po mapie użyj iteratorów
C/C++
for( auto iter = ilosc.begin(); iter != ilosc.end(); ++iter ) {
    // iter->first = klucz
    // iter->second = wartosc
}
P-107638
pekfos
» 2014-04-04 14:58:26
C/C++
for( auto iter: map )
{
}

Z tego co mi się zdaje to mapa nie posiada operatora +=.
Faktycznie, nie ma. Jak to się ma do czegokolwiek, co padło w tym temacie?

C/C++
// iter->first = klucz
To by się nie skompilowało.
P-107686
waxx
» 2014-04-04 23:38:47
Ale co nie skompilowało? Zdajesz sobie sprawę, że to był komentarz...
C/C++
for( auto & iter: map ) { }

Żeby nie kopiować elementu :)
P-107723
pekfos
» 2014-04-05 10:07:02
Ale co nie skompilowało? Zdajesz sobie sprawę, że to był komentarz...
A jaki był cel tego komentarza? Przykład użycia iteratora? Bardzo nietrafiony..
P-107726
waxx
» 2014-04-05 11:14:22
No ale czemu się tak czepiasz?

C/C++
// iter->first - tutaj jest klucz
// iter->second - tutaj jest wartosc

lepiej? ))
P-107729
« 1 »
  Strona 1 z 1