Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос о контейнере map, C++

Soloman Знаток (425), на голосовании 7 лет назад
Как удалить элементы контейнера полностью, автоматически декрементировав ключи, при вызове erase() удаляется только содержимое ячеек, а не они сами.

P.S. Как в контейнере map после этого вызвать аналог метода shrink_to_fit() из vector?
Голосование за лучший ответ
klazarev Гуру (4992) 7 лет назад
Для удаления всех элементов, есть метод clear, а высвободить память, как я понял, не так легко, как в векторе, т. е. shrink to fit нету. Тут зависит от "контекста", смотря для чего вы используете map. И где. Например можно заключить объявление map в пустое тело, и при выходе из той области, всё само высвободится
SolomanЗнаток (425) 7 лет назад
Удалить нужно именно определенные, не все. Задача в том, чтоб заполнить map 16+ элементами чисел (каждое от 1 до 9) и после чего удалить рандомное количество РАНДОМНЫХ элементов. У меня при erase нули остаются от удаленных.
klazarev Гуру (4992) Вообще, достаточно странно, у других работает, как я понял. http://www.cplusplus.com/reference/map/map/erase/ попробуй проверить, вдруг что-то не правильно сделал.
klazarevГуру (4992) 7 лет назад
UPD.
Вообще, как говорят на stackoverflow, можно еще сделать контейнер с указателями, и выделять память и высвобождать вручную
Похожие вопросы