// Testing Standbard Library vector class template
// element-maninpulation functions.
#include <iostream>
using std::cout;
using std::endl;
#include <vector>
#include <algorithm>
#include <numeric>
#include <iterator>
int main()
{
const int SIZE = 6;
int iArray[ SIZE ] = {1, 2, 3, 4, 5, 6};
std::vector< int > integers( iArray, iArray + SIZE );
std::ostream_iterator< int > outputIt( cout, " ");
cout << "Vector integers contains: ";
std::copy( integers.begin(), integers.end(), outputIt );
cout << " /nFirst element of integers: "<<integers.front()
<< " /nLast element of integers: " <<integers.back();
integers[ 0 ] = 7;
integers.at( 2 ) = 10;
//insert 22 as 2nd element
integers.insert( integers.begin() + 1, 22 );
cout<< "/n/n Contents of vector integers. after changes: ";
std::copy( integers.begin(), integers.end(), outputIt );
//access out-of-range element
try{
integers.at( 100 ) = 777;
}//end try
catch(std::out_of_range outOfRange)//catch out_of_range exception
{
cout<< "/n/nException: "<<outOfRange.what();
}//end catch
//erase first element
integers.erase( integers.begin() );
cout<<"/n/nVector integers after erasing first element: ";
std::copy( integers.begin(), integers.end(), outputIt );
//erase remaining elements
integers.erase( integers.begin(), integers.end() );
cout<<"/nAfter Erasing all elements, vector integers "
<< ( integers.empty() ? "is" : " is not" ) << " empty";
//insert elements from array
integers.insert( integers.begin(), iArray, iArray + SIZE );
cout<< "/n/nContents of vector integers before clear: ";
std::copy( integers.begin(), integers.end(), outputIt );
//empty integers; clear calls erase to empty a collectioin
integers.clear();
cout<< "/nAfter clear, vector integers "
<< (integers.empty() ? "is" : "is not") << " empty";
cout<<endl;
return 0;
}