Tengo un vector (el orden es importante) de objetos (vamos a llamarlos clase myobj) donde intento eliminar varios objetos a la vez.C++ remove_if en un vector de objetos
class vectorList
{
vector<*myobj> myList;
};
class myobj
{
char* myName;
int index;
bool m_bMarkedDelete;
}
Estaba pensando que la mejor manera de hacer esto sería para señalar objetos específicos myObj para su eliminación y luego llamar myList.remove_if() en el vector. Sin embargo, no estoy exactamente seguro de cómo usar predicados y demás para esto. ¿Debo crear una variable miembro en el objeto que me permita decir que quiero eliminar el myobj y luego crear un predicado que compruebe si se estableció la variable miembro?
¿Cómo implemento el predicado como parte de la clase vectorList?
Puede que no sea relevante, pero std :: list conserva el orden y tiene su propia función remove_if, que es mucho más rápida y no necesita el borrado por separado. – Ant
@Ant: 'list :: remove_if' más rápido que eliminar y borrar en un vector? ¿Bajo que circunstancias? Eso ciertamente no ha sido el caso en muchas pruebas razonables que he hecho alguna vez. No asuma que solo porque el borrado es una operación de tiempo constante para la lista, será más rápido. La contigüidad y las garantías de acceso aleatorio de 'std :: vector' lo compran muchísimo. –