Пытается написать метод, который удаляет первые (с наименьшими ключами) N элементов из std :: map. Пробовал это:Удалить первые N элементов с std :: map?
void EraseNMapElements(const int numElementsToRemove){
const int originalSize = _map.size();
auto eraseIter = _map.begin();
std::advance(eraseIter, numElementsToRemove);
_map.erase(_map.begin(), eraseIter);
assert(_map.size() == (originalSize - numElementsToRemove)) || (0 == originalSize) || (0 == _map.size()));
}
Он работает, когда количество элементов больше, чем номер, который требуется удалить. Поэтому, если у меня было пять элементов, попросите удалить 2, последний элемент останется. Однако, если у меня есть один элемент и запрос на удаление 2, у меня остается один элемент.
Есть ли опрятный способ покрыть это? Я мог бы вытолкнуть оператор IF вокруг проверки на numElementsToRemove больше, чем map.size(), но должно быть лучшее решение?
Почему было бы лучшее решение, чем самое простое решение? –