#include <algorithm>
#include <vector>
struct comp
{
bool operator()( const unsigned int i1, const unsigned int i2 ) const
{
return i1 < i2;
}
};
void Synchronize()
{
std::vector<unsigned int> vec_master;
std::vector<unsigned int> vec_slave;
std::vector<unsigned int> vec_transfer;
std::vector<unsigned int> vec_delete;
std::vector<unsigned int>::const_iterator const_iter;
vec_master.push_back(7);
vec_master.push_back(2);
vec_master.push_back(1);
vec_master.push_back(4);
vec_master.push_back(5);
vec_master.push_back(3);
vec_master.push_back(6);
vec_slave.push_back(9);
vec_slave.push_back(3);
vec_slave.push_back(1);
vec_slave.push_back(4);
vec_slave.push_back(5);
cerr << "\n\nContents of master: " << endl;
for ( const_iter = vec_master.begin(); const_iter != vec_master.end(); ++const_iter )
{
cerr << *const_iter << " ";
}
cerr << "\n\nContents of slave: " << endl;
for ( const_iter = vec_slave.begin(); const_iter != vec_slave.end(); ++const_iter )
{
cerr << *const_iter << " ";
}
std::sort( vec_master.begin(), vec_master.end(), comp() );
std::sort( vec_slave.begin(), vec_slave.end() );
cerr << "\n\n\nAFTER SORT:\n" << endl;
cerr << "Contents of master: " << endl;
for ( const_iter = vec_master.begin(); const_iter != vec_master.end(); ++const_iter )
{
cerr << *const_iter << " ";
}
cerr << "\nContents of slave: " << endl;
for ( const_iter = vec_slave.begin(); const_iter != vec_slave.end(); ++const_iter )
{
cerr << *const_iter << " ";
}
cerr << "\n\n\nNumbers NOT on the slave:" << endl;
insert_iterator< vector<unsigned int> > ii( vec_transfer, vec_transfer.begin() );
std::set_difference( vec_master.begin(), vec_master.end(), vec_slave.begin(), vec_slave.end(), ii );
for ( const_iter = vec_transfer.begin(); const_iter != vec_transfer.end(); ++const_iter )
{
cerr << *const_iter << " ";
}
cerr << "\nNumbers NOT on the master:" << endl;
std::set_difference( vec_slave.begin(), vec_slave.end(), vec_master.begin(), vec_master.end(), ostream_iterator<unsigned int>(cout, " " ));
cout << endl;
cerr << endl;
}
int main ( void )
{
Synchronize();
return 0;
}