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);
}