Я хотел бы удалить ключ с карты STL. Однако map.erase()
ничего не делает. Как бы я это сделалУдалить ключ с карты C++
ответ
Это зависит полностью от того, как вы его вызываете, но похоже, что вы можете использовать опцию first,last
. Если вы хотите, вы должны помнить, что он стирает элементы, начиная с first
, но до исключаяlast
. Если вы следуете этому правилу, удаление на основе итератора должно работать нормально, либо как отдельный элемент, либо диапазон.
Если вы стираете ключ, тогда он также должен работать, если, конечно, ключ находится там.
Следующий пример кода показывает все три метода в действии:
#include <iostream>
#include <map>
int main (void) {
std::map<char,char> mymap;
std::map<char,char>::iterator it;
mymap['a'] = 'A'; mymap['b'] = 'B'; mymap['c'] = 'C';
mymap['d'] = 'D'; mymap['e'] = 'E'; mymap['f'] = 'F';
mymap['g'] = 'G'; mymap['h'] = 'H'; mymap['i'] = 'I';
it = mymap.find ('b'); // by iterator (b), leaves acdefghi.
mymap.erase (it);
it = mymap.find ('e'); // by range (e-i), leaves acd.
mymap.erase (it, mymap.end());
mymap.erase ('a'); // by key (a), leaves cd.
mymap.erase ('z'); // invalid key (none), leaves cd.
for (it = mymap.begin(); it != mymap.end(); it++)
std::cout << (*it).first << " => " << (*it).second << '\n';
return 0;
}
, который выводит:
c => C
d => D
Я чувствую себя настолько тупым, что не заметил переопределения для 'const key_type &'. Спасибо, что указали! –
Вы должны найти Итератор первого
map.erase(ITERATOR) ;
Для сделайте это безопасным, вам нужно убедиться, что ITERAT ИЛИ существует, однако. Примерный пример:
#include <stdio.h>
#include <map>
using namespace std ;
int main()
{
map<int,int> m ;
m.insert(make_pair(1,1)) ;
map<int,int>::iterator iter = m.find(1) ;
if(iter != m.end())
m.erase(iter);
else puts("not found") ;
}
- 1. Удалить пару ключ-значение с карты улья?
- 2. Sass удалить ключ карты внутри Mixin
- 3. Google GEOchart, Как удалить ключ карты
- 4. C++ STL карта :: удалить несуществующий ключ
- 5. C# Удалить ключ для списка
- 6. Получить ключ от карты карты
- 7. C++ 11 share_ptr as value ключ карты
- 8. Установить ключ и значение карты * в C++
- 9. Пользовательские типы как ключ для карты - C++
- 10. C++ Найти значение карты и ключ
- 11. Удалить маркер с карты
- 12. Удалить многоугольник с карты
- 13. Удалить указатели с карты
- 14. Google Карты недействительный ключ
- 15. Условно удалить ключ с картинки
- 16. Удалить значения nil с карты?
- 17. vim: команда карты с подтверждением на ключ
- 18. Получить ключ заводной карты
- 19. Как сортировать ключ карты
- 20. Ключ ввода карты в java
- 21. Умные указатели как ключ карты
- 22. Как удалить/удалить полилинию с карты Google?
- 23. Как маршалу карты в {ключ: значение, ключ: значение, ...} с Moxy
- 24. Удалить пару ключ/значение из unordered_map C++
- 25. Удалить Отдельный объект с карты
- 26. Пытается удалить маркеры с карты
- 27. листовка - Удалить ярлык с карты
- 28. Удалить элемент с карты immutable.js
- 29. Удалить стрелка с карты Google
- 30. Удалить папки с SD-карты
Erase делает что-то. Как вы его используете? И что заставляет вас поверить, что ничего не делает? –
map.erase (ключ). –
И к моему второму вопросу? –