Liczba wystąpienia danej wartosci w tablicy

0

Witam, wie ktoś jak policzyć ilość wystapień poszczegolnych wartości w tablicy 1-wymiarowej.

Przykładowo, dla tablicy liczb :

 
-12 3 -12 4 1 1 -12 1 -1 1 2 3 4 2 3 -12

Chciałbym otrzymać:

Liczba wystapien 
-12 - 4
-1  - 1
1   - 4
2   - 2
3   - 3 
4   - 2 
 

Funkcja powinna przeszukiwac tablice dla dowolnych wartosci podanych na wejsciu. Tablice juz sobie posortowalem, usunalem powtorzenia, ale wciaz mam problem z iloscią wystapień poszczególnych liczb. Funkcja bedzie sprawdzac stan tablicy zaraz po wejsciu (czyli przed sortowaniem itd...). Chodzi o to, że ja znajduje powtarzające sie liczby i powinienem napisac ile razy sie powtarzaja, tylko nie wiem jak policzyc to ile razy dana liczba sie powtarza.

0

Weź sobie mapę (std::map<int, unsigned>) i przejedź po całej tablicy, za każdym razem robiąc ++mapa[tablica[index]].
W wyniku dostaniesz mapę wartość => wystąpień. ;)

edit: mała poprawka ;)

0

Niestety nie potrafię posługiwać się mapami

0

http://www.cplusplus.com/reference/stl/map/

Przykład:

#include <iostream>
#include <map>

int main() {
    std::map<int, unsigned int> wystapien;
    const unsigned int size = 16;
    int tablica[size] = {
        -4,  4, 18, 23, 
        23,  4, -1, -4, 
        18, 24, 23, 23, 
         4, 18,  7, 44 
    };
    
    for (unsigned int i = 0; i < size; ++i) {
        ++wystapien[tablica[i]];
    }
    for (std::map<int, unsigned int>::const_iterator i = wystapien.begin();
            i != wystapien.end(); ++i) {
        std::cout << i->first << " wystepuje w tablicy " << i->second << " razy.\n";
    }
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1