Mejor clase de contenedor para eliminar un elemento.
Necesito usar la función erase pero si uso un vector, sería muy lento. ¿Qué contenedor debo usar? Intenté con una lista pero no tenía acceso a un iterador aleatorio, que es lo que necesito. Aquí está mi código, también estaría bien una solución alternativa:
container<><ll, ll="">> m;
for (auto i=0, j=1; j < m.size();)
{
if (m[i].first > m[j].first)
{
cout << m[i].second << endl;
m.erase(m.begin()+i);
}
}
Edit: Usar iterador y lista funciona increíblemente bien.</ll,>
davy.ai
Si se requiere acceso aleatorio y la función de borrado necesita ser eficiente, una opción podría ser utilizar el contenedor deque. Ofrece complejidad constante de tiempo para inserciones y eliminaciones al principio y al final, así como O(sqrt(n)) para inserciones y eliminaciones en cualquier otra posición, lo cual es significativamente mejor que la complejidad O(n) del contenedor vector.
Para utilizar deque, reemplace la declaración del vector con:
“`c++
deque<><ll,ll>> m;
Este enfoque puede ser más lento que el uso de deque o vector, pero aún puede ser más rápido que el uso de la función de borrado del vector.</ll,ll></ll,ll>