i have a std::vector
and a second container holding iterators or indexes (no keys, i want constant access to the element) to this vector for del
I've written a function, based on Benjamin Lindley answer https://stackoverflow.com/a/4115582/2835054.
#include
#include
#include
template
void remove_multiple_elements_from_vector(std::vector &vector,
std::vector &indexes)
{
// 1. indexType is any integer.
// 2. elementType is any type.
// 3. Indexes should be unique.
// 4. The largest index inside indexes shouldn't be larger than
// the largetst index in the vector.
// 5. Indexes should be sorted in ascending order
// (it is done inside function).
std::sort(indexes.begin(), indexes.end());
indexType currentIndexInIndexesVector = 0;
indexType last = 0;
for(indexType i=0; i= vector.size()) break;
vector[last] = vector[i];
}
vector.resize(last);
}
int main()
{
std::vector vector = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::vector indexes = {0, 10, 5};
for (auto &vectorElement : vector)
{
std::cout << vectorElement << " ";
}
std::cout << "\n";
remove_multiple_elements_from_vector(vector, indexes);
for (auto &vectorElement : vector)
{
std::cout << vectorElement << " ";
}
}