Я пытаюсь написать программу, которая берет 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, это то, что выбрал мой учитель, а не я.
использование distance(zero.first, zero.second)
, -
Оператор не может быть применен к мультимножественным итераторам.
Это было бы намного проще, используя карту:
std::map<int, int> counts;
...
count[num]++; // map::operator[] will insert the value if it's not already in the sequence.