Почему в данном случае ошибка "C2100 недопустимое косвенное обращение " из файла xtree?

Рейтинг: -1Ответов: 1Опубликовано: 05.03.2023

Мой код:

#include <iostream>
#include <map>
#include <ctime>


int main() {
    srand(time(0));
    int sum, quan;
    std::map<int, int> quantity;
    for (int i = 0; i < 500; i++) {
        sum = rand() % 6 + 1 + rand() % 6 + 1; 
        quan = quantity[sum] + 1;
        quantity.insert(sum, quan);
    }

    for (auto &it : quantity) {
        std::cout << "Sum: " << it.first << "    quantity: " << it.second << std::endl;
    }
}

Кусок кода от куда ошибка (код не мой, мне его сам компилятор после выполнения выдал...):

Ответы

▲ 0Принят

Просто insert, который вы используете как

quantity.insert(sum, quan);

с двумя параметрами — используется для вставки диапазона через итераторы. Но у вас sum и quan вовсе не итераторы...

Делайте так:

quantity.insert(std::make_pair(sum, quan));