How to Delete Multiple Elements from a Vector in C++?
In this article, we will learn how to erase multiple elements from a vector in C++.
The easiest and most efficient method to delete the multiple elements from the vector is by using vector erase() method. Let’s take a look at an example:
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
// Delete all elements from 1st index
// to 3rd index
v.erase(v.begin() + 1, v.begin() + 4);
for (auto i : v)
cout << i << " ";
return 0;
}
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
// Delete all elements from 1st index
// to 3rd index
v.erase(v.begin() + 1, v.begin() + 4);
for (auto i : v)
cout << i << " ";
return 0;
}
Output
1 5
Explanation: The vector erase() method removed all element of given range [first, last) which here is from index 1 to 4.
There are also some other methods in C++ to delete the multiple elements from a vector. Some of them are as follows:
Using Loop with Vector erase()
If the elements to be deleted are stored non-contiguously in the vector, then they have to be manually deleted the elements using loop with vector erase().
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
// Delete the even elements
for (auto i = v.begin(); i != v.end();) {
if ((*i) % 2 == 0)
i = v.erase(i);
else
i++;
}
for (auto i : v)
cout << i << " ";
return 0;
}
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
// Delete the even elements
for (auto i = v.begin(); i != v.end();) {
if ((*i) % 2 == 0)
i = v.erase(i);
else
i++;
}
for (auto i : v)
cout << i << " ";
return 0;
}
Output
1 3 5
Explanation: In the above code, if the elements is even then we delete the element from vector otherwise we increment the iterator.
Using vector clear()
If all the elements are to be deleted, we can use vector clear() method that removes all the elements in one go.
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
// Remove all elements from vector
v.clear();
cout << v.size();
return 0;
}
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
// Remove all elements from vector
v.clear();
cout << v.size();
return 0;
}
Output
0