Eliminar por índice de un vector C ++ usando remove_if

Podemos usar remove_if en C ++ para eliminar elementos de un vector en tiempo lineal basado en un predicado que opera en los elementos.

bool condition(double d) {...}

vector<double> data = ...
std::remove_if (data.begin(), data.end(), condition);

¿Qué pasa si mi condición no depende de los valores, sino de los índices? En otras palabras, si quisiera eliminar todos los elementos indexados impares, o algún conjunto de índices arbitrarios, etc.

bool condition(int index) {//returns whether this index should be removed}

vector<double> data = ...
std::remove_if (data.begin(), data.end(), ???);

Respuestas a la pregunta(3)

Su respuesta a la pregunta