sort programación lista linked lenguaje estándar biblioteca c++ stl

programación - sort function in c++



STL Multimap Eliminar/Borrar valores (2)

Desde C ++ 11, std::multimap::erase devuelve un iterador después del último elemento eliminado.

Por lo tanto, puede volver a escribir la respuesta de Nikola de forma un poco más limpia sin necesidad de introducir la variable local erase_iter:

typedef std::multimap<std::string, int> Multimap; Multimap data; for (Multimap::iterator iter = data.begin(); iter != data.end();) { // removes all even values if (iter->second % 2 == 0) iter = data.erase(iter); else ++iter; }

(Ver también respuesta a esta pregunta )

Tengo STL Multimap, quiero eliminar entradas del mapa que tiene un valor específico, no quiero eliminar la clave completa, ya que esa clave puede estar asignada a otros valores que son necesarios.

Cualquier ayuda por favor.


Si entiendo correctamente estos valores pueden aparecer bajo cualquier clave. Si ese es el caso, tendrá que iterar sobre su multimap y borrar valores específicos.

typedef std::multimap<std::string, int> Multimap; Multimap data; for (Multimap::iterator iter = data.begin(); iter != data.end();) { // you have to do this because iterators are invalidated Multimap::iterator erase_iter = iter++; // removes all even values if (erase_iter->second % 2 == 0) data.erase(erase_iter); }