C++ Programming Code Examples
Learn C++ Language
Vector Library erase() Function in C++ Programming Language
Vector Library erase() Function in C++
Erase elements. Removes from the vector either a single element (position) or a range of elements ([first,last)). This effectively reduces the container size by the number of elements removed, which are destroyed.
Because vectors use an array as their underlying storage, erasing elements in positions other than the vector end causes the container to relocate all the elements after the segment erased to their new positions. This is generally an inefficient operation compared to the one performed for the same operation by other kinds of sequence containers (such as list or forward_list).
Syntax for Vector erase() Function in C++
#include <vector>
iterator erase (const_iterator position);
iterator erase (const_iterator first, const_iterator last);
position
Iterator pointing to a single element to be removed from the vector. Member types iterator and const_iterator are random access iterator types that point to elements.
first, last
Iterators specifying a range within the vector] to be removed: [first,last). i.e., the range includes all the elements between first and last, including the element pointed by first but not the one pointed by last. Member types iterator and const_iterator are random access iterator types that point to elements.
Function returns an iterator pointing to the new location of the element that followed the last element erased by the function call. This is the container end if the operation erased the last element in the sequence.
Member type iterator is a random access iterator type that points to elements.
Complexity
Linear on the number of elements erased (destructions) plus the number of elements after the last element deleted (moving).
Iterator validity
Iterators, pointers and references pointing to position (or first) and beyond are invalidated, with all iterators, pointers and references to elements before position (or first) are guaranteed to keep referring to the same elements they were referring to before the call.
Data races
The container is modified. None of the elements before position (or first) is accessed, and concurrently accessing or modifying them is safe.
Exception safety
If the removed elements include the last element in the container, no exceptions are thrown (no-throw guarantee).
Otherwise, the container is guaranteed to end in a valid state (basic guarantee).
An invalid position or range causes undefined behavior.
/* removes an element at specific index, or removes a range of elements from specific start to end indices by vector erase() function code example. */
//C++ STL program to demonstrate example of vector::erase() function
#include <iostream>
#include <vector>
using namespace std;
int main()
{
//vector declaration
vector<int> v1{ 10, 20, 30, 40, 50 };
//printing elements
cout << "v1: ";
for (int x : v1)
cout << x << " ";
cout << endl;
//removing one element
v1.erase(v1.begin() + 2); //removes 2nd index element
//printing elements after remove one element
cout << "After removing one element..." << endl;
cout << "v1: ";
for (int x : v1)
cout << x << " ";
cout << endl;
//removing a range of elements
v1.erase(v1.begin() + 1, v1.begin() + 3); //removes 1,2 index elements
//printing elements after remove one element
cout << "After removing a range of elements..." << endl;
cout << "v1: ";
for (int x : v1)
cout << x << " ";
cout << endl;
return 0;
}
Algorithm "Counts the partition" of the given number. There is no straight method to count a total number of the partition so we need to 'Generate and Count' them. Time complexity