#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
template <class T>
void print(T& c){
for( typename T::iterator i = c.begin(); i != c.end(); i++ ){
std::cout << *i << endl;
}
}
int main( )
{
vector<double> v( 5, 2.78 );
v[2] = 0.0;
// make the vector as large as possible without reallocating
v.resize( v.capacity(), 2.78 );
// find the smallest number
vector<double>::iterator before_itr = min_element( v.begin(), v.end() );
// append one more element. This causes reallocation
v.push_back( 2.78 );
// find the smallest number. (Its value is the same as before.)
vector<double>::iterator after_itr = min_element( v.begin(), v.end() );
// See if minimum is still in the same spot of memory
if( before_itr == after_itr )
cout << "The iterators are the same";
else
cout << "The iterators are not the same";
}