vi el siguiente código se utiliza para eliminar un elemento seleccionado del std::vector
:¿El iterador admite + operador?
vector<hgCoord>::iterator it;
int iIndex = 0;
const int iSelected = 5;
for(it = vecPoints.begin(); it != vecPoints.end(); ++it, ++iIndex)
{
if(iIndex == iSelected)
{
vecPoints.erase(it);
break;
}
}
Argumento que este código no es eficiente y debe ser escrito de la siguiente manera:
vector<hgCoord>::iterator it;
int iIndex = 0;
const int iSelected = 5; // we assume the vector has more than 5 elements.
vecPoints.erase(vecPoints.begin() + iSelected);
Sin embargo, no estoy Asegúrese de si este código sigue o no el estándar C++ STL.
Tiene razón, ya que 'std :: vector :: iterator' es un' RandomAccessIterator' (a.k.a. 'T *'). Solo recuerda que si tienes menos de 5 elementos en tu vector, tu segundo algoritmo fallará. –
Si esos prefix-'i''s son una forma de notación húngara, me opongo a cualquier parte del código. –
@ eq-: qué, porque 'i' debe usarse como prefijo que significa' iterador', quiere decir ;-p –