Este es un seguimiento de una pregunta anterior que tuve (Complexity of STL max_element).elemento de borrado máximo del conjunto de STL
Quiero básicamente mostrar el elemento máximo de un conjunto, pero estoy teniendo problemas.
Aquí es más o menos mi código:
set<Object> objectSet;
Object pop_max_element() {
Object obj = *objectSet.rbegin();
set<Object>::iterator i = objectSet.end()--; //this seems terrible
objectSet.erase(i); //*** glibc detected *** free(): invalid pointer
return obj;
}
Antes he intentado objectSet.erase(objectSet.rbegin());
pero el compilador se quejaron de que no había ninguna función de emparejamiento (supongo que no le gusta el reverse_iterator). Sé que no hay ninguna comprobación de un conjunto vacío, pero está fallando cuando objectSet.size() >> 0.
'* objectSet.rbegin();' ¿es un error tipográfico? estás desreferenciando el set? –
No, es el iterador desreferenciado. El punto se une más apretado que la estrella. –