Используйте карту, где ключом является идентификационный номер, а значением является количество:
std::map<int, int> quantities;
Прокрутите список и обновите соответствующую запись на карте. Вы можете использовать оператор []
на карте для доступа к значению, соответствующему данному ключу. Например, если у вас есть идентификатор и количество из ваших данных, вы можете сделать это:
quantities[id] += quantity;
Это работает без инициализации карты, потому что если оператор []
запрашивает запись, которой еще нет на карте, он автоматически вставляется со значением по умолчанию, а значение по умолчанию для int
равно нулю .
Теперь вы можете пройти по карте и найти цены на все ваши предметы. Итератор карты дает вам pair
, где первый элемент - это ключ карты, а второй элемент - это значение для этого ключа. Вы можете написать такой цикл, чтобы напечатать содержимое карты:
for (std::map<int, int>::const_iterator it = quantities.begin();
it != quantities.end();
++it)
{
std::cout << it->first << " " << it->second << std::endl;
}
Если вы найдете цену для каждого предмета и умножите ее на it->second
, у вас будет то, что вы ищете.