erase

C++ Library  
 

Header

<vector>
iterator erase(iterator it) 

Removes from the vector container, the element positioned at it.

iterator erase(iterator first, iterator last)

Removes from the vector container, the elements in the range [first, last).

Both of the above return an iterator that designates the first element remaining beyond any elements removed, or end() if no such element exists.

The member function invalidates all the iterators and references to the vector container. The number of calls to the destructor (of the erased type T) is the same as the number of elements erased, but the number of calls to the assignment operator of T is equal to the minimum of the number of elements before the erased elements and the number of elements after the erased elements.


Sample

#include <vector>
#include <iostream>

int main()
{
	//default constructor
	std::vector<int> c1 ;

	//create vector with 10 copies of 4
	std::vector<int> c2(10, 4) ;

	//copy constructor
	std::vector<int> c3(c2) ;

	

	int ai[] = {0, 1, 2, 3, 4, 5} ;
	int i ;

	//range copy constructor
	std::vector<int> c4(ai, ai+5) ;
	
	std::vector<int> c5 ;

	//push_back
	for(i = 0; i < 5; i++)
		c5.push_back(ai[i]) ;

	//get_allocator
	std::vector<int>::allocator_type a1 = c4.get_allocator() ;

	//begin, end
	std::cout << "c4 (using begin, end) = " ;
	std::vector<int>::iterator Iter ;
	for(Iter = c4.begin(); Iter != c4.end(); Iter++)
		std::cout << *Iter << ", " ;
	std::cout << std::endl ;

	//rbegin, rend
	std::cout << "c4 (using rbegin, rend) = " ;
	std::vector<int>::reverse_iterator RevIter ;
	for(RevIter = c4.rbegin(); RevIter != c4.rend(); RevIter++)
		std::cout << *RevIter << ", " ;
	std::cout << std::endl ;

	//assign
	c2.assign(ai, ai+4) ;

	c1.assign(10, 4) ;

	//at
	std::cout << "third element in c1 = " << c1.at(3) << std::endl ;

	//operator[]
	std::cout << "c4[3] = " << c4[3] << std::endl ;

	//back
	std::cout << "last element in c2 = " << c2.back() << std::endl ;

	//front
	std::cout << "first element in c2 = " << c2.front() << std::endl ;

	//size
	std::cout << "number of elements in c2 = " << c2.size() << std::endl ;

	//max_size
	std::cout << "max number of elements c2 can hold using current allocator = " 
		<< c2.max_size() << std::endl ;

	//erase
	c3.erase(c3.begin(), c3.begin() + 4) ;

	//clear
	c2.clear() ;

	//empty
	if (c2.empty() == true)
		std::cout << "c2 is now empty" << std::endl ;

	//resize
	c2.resize(10, 30) ;
	std::cout << "number of elements in c2 = " << c2.size() << std::endl ;
	std::cout << "last element in c2 = " << c2.back() << std::endl ;
	std::cout << "first element in c2 = " << c2.front() << std::endl ;

	//reserve, capacity
	c2.reserve(70) ;
	std::cout << "current capacity of c2 = " 
		<< c2.capacity() << std::endl ;

	//pop_back
	c2.pop_back() ;
	std::cout << "last element in c2 = " << c2.back() << std::endl ;

	//swap
	c3.swap(c2) ;
	std::cout << "number of elements in c3 = " << c3.size() << std::endl ;
	std::cout << "last element in c3 = " << c3.back() << std::endl ;
	std::cout << "first element in c3 = " << c3.front() << std::endl ;

	//insert
	c1.insert(c1.begin(), 20) ;
	c1.insert(c1.begin()+1, 4, 10) ;
	c1.insert(c1.begin()+2, c5.begin(), c5.end()) ;
	std::cout << "c1 = " ;
	for(Iter = c1.begin(); Iter != c1.end(); Iter++)
		std::cout << *Iter << ", " ;
	std::cout << std::endl ;

	return 0 ;
}

Program Output

c4 (using begin, end) = 0, 1, 2, 3, 4,
c4 (using rbegin, rend) = 4, 3, 2, 1, 0,
third element in c1 = 4
c4[3] = 3
last element in c2 = 3
first element in c2 = 0
number of elements in c2 = 4
max number of elements c2 can hold using current allocator = 1073741823
c2 is now empty
number of elements in c2 = 10
last element in c2 = 30
first element in c2 = 30
current capacity of c2 = 70
last element in c2 = 30
number of elements in c3 = 9
last element in c3 = 30
first element in c3 = 30
c1 = 20, 10, 0, 1, 2, 3, 4, 10, 10, 10, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,

© 1997 Microsoft Corporation. All rights reserved. Terms of Use.