Эффективная вставка или обновление целочисленных значений в хэш-карте C++ с помощью повторяющихся целочисленных ключейC++

Программы на C++. Форум разработчиков
Anonymous
Эффективная вставка или обновление целочисленных значений в хэш-карте C++ с помощью повторяющихся целочисленных ключей

Сообщение Anonymous »

Я работаю с std::unordered_map в C++, где и ключи, и значения являются целыми числами. Мой набор данных содержит много повторяющихся ключей. Для каждой пары ключ-значение в данных:
Если ключ не существует в карте: вставьте ключ с соответствующим значением.
Если ключ уже существует: обновите. существующее значение, добавив к нему новое значение (т. е. карта[ключ] = карта[ключ] + новое значение).
В настоящее время я проверяю, существует ли ключ, перед вставкой или обновлением, используя:

Код: Выделить всё

if (map.count(key) > 0) {
// Key exists, update the value
map[key] += newValue;
} else {
// Key does not exist, insert the key-value pair
map[key] = newValue;
}

Однако я обеспокоен тем, что выполнение этой проверки существования перед каждой вставкой может увеличить общую временную сложность до O(n²) для больших наборов данных.
Есть ли более эффективный способ вставки или обновления значений в карту без явной проверки существования ключа каждый раз?


Подробнее здесь: https://stackoverflow.com/questions/128 ... eated-inte

Вернуться в «C++»