Removendo por índice de um vetor C ++ usando remove_if

Podemos usar remove_if em C ++ para remover elementos de um vetor em tempo linear com base em um predicado que opera nos elementos.

bool condition(double d) {...}

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

E se minha condição não depender dos valores, mas dos índices? Em outras palavras, se eu quisesse remover todos os elementos indexados ímpares ou algum conjunto arbitrário de índices, etc?

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

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

questionAnswers(3)

yourAnswerToTheQuestion