Операции C ++ над значениями, заданными multiset :: equal_range

Я пытаюсь написать программу, которая берет 1000 случайных чисел от 0 до 9, а затем подсчитывает, сколько раз появилось каждое число:

    srand(time(NULL));
multiset<int> M;//multiset that contains 1000 random numbers from 0 to 9
for (int i = 0; i < 1000; i++){
r.insert(rand() % 10);
s.insert(rand() % 10);
}

vector <int> R(10);//vector that stores how many times each number appeared
//(so R[0] equals how many times 0 appeared and so on)

pair<multiset<int>::iterator, multiset<int>::iterator> zero = M.equal_range(0);
R[0] = zero.second - zero.first;

Проблема в последней строке (в которой я пытаюсь сосчитать количество появлений 0), она подчеркивает минус и говорит, что ни один оператор не соответствует этим операндам. Но почему? Разве не ноль. Первый и ноль. Второй концы отсеков? И как это исправить?

Изменить: я должен использовать мультимножество, вектор и equal_range, это то, что выбрал мой учитель, а не я.

2

Решение

использование distance(zero.first, zero.second), - Оператор не может быть применен к мультимножественным итераторам.

3

Другие решения

Это было бы намного проще, используя карту:

std::map<int, int> counts;
...
count[num]++; // map::operator[] will insert the value if it's not already in the sequence.
-1

По вопросам рекламы [email protected]