2014-01-13 4 views
-5

У меня есть вектор целых чисел. который содержит числа. Я хочу подсчитать количество вхождений каждого числа в этом векторе. Так какой будет оптимальный способ сделать это. Поскольку я новичок в векторах, пожалуйста, дайте мне знать любой оптимальный метод.Найти число вхождений чисел в векторе в C++

+2

Что вы пытались? – aalku

+0

Покажите нам код, который вы написали ... – Sean

+0

Один совет: std :: map – Till

ответ

3

Вы можете использовать хеш-таблицу, реализованную std :: unordered_map. Например:

#include <unordered_map> 
#include <vector> 

void count_occurrence(std::unordered_map<int,int>& m, std::vector<int>& v){ 
    for (auto itr = v.begin(); itr != v.end(); ++itr){ 
     ++m[*itr]; 
    } 
} 

//...somewhere else 
//you already have std::vector v filled 
std::unordered_map<int,int> m; 
count_occurrence(m, v); 

//print the number of occurrences of 1 
std::cout<<m[1]<<std::endl; 
0

Вы можете отсортировать элементы вектора

перебирать вектор

сохранить текущее число в качестве х

Сравнить текущий индекс к предыдущему индексу.

Если они равны, то увеличиваем другую переменную е

Если они неравны, начинают цикл снова

Это, конечно, ни в коем случае не шаг за шагом инструкции, но она содержит достаточно направление получите вас

Смежные вопросы