Home > Mobile >  Is there any standard variadic function for erasing multiple elements in a vector?
Is there any standard variadic function for erasing multiple elements in a vector?

Time:12-04

Take this vector:

std::vector<int> v = {1, 2, 3, 4, 5};

Let's say I want to remove some elements of a vector at some arbitrary indices: 0, 1, and 3. It's tedious to have to write something like this:

v.erase(v.begin());
v.erase(v.begin());
v.erase(v.begin()   1);

Is there any standard function that takes in an arbitrary number of indices to erase from a vector? Something like this: v.erase(0, 1, 3);

CodePudding user response:

Yes and no.

There's nothing that deals with indices. There's also nothing that deals with arbitrary elements.

But you can erase multiple items that form a contiguous range at once. So you can coalesce your first two calls to erase into one (and probably about double the speed in the process).

// erase the first two elements
v.erase(v.begin(), v.begin()   2);

CodePudding user response:

If you want to erase first three element so for this you can run.

  std::vector<int> v = {1, 2, 3, 4, 5};
    v.erase(v.begin(),v.begin() 3);

or,

v.erase(v.begin(),v.end()-2);
  • Related