#include <iterator>
#include <sstream>
#include <iostream>
#include <string>
#include <map>

namespace std {
istream& operator >> (istream& is, pair<string, string>& ps)
{
   return is >> ps.first >> ps.second;
}
ostream& operator << (ostream& os, const pair<const string, string>& ps)
{
   return os << ps.first << "==>>" << ps.second;
}
}

int main() {
  std::string file = "one two three four five six seven eight"; 
  std::istringstream is(file);
  std::map<std::string, std::string> mps;
  
  std::insert_iterator< std::map<std::string, std::string> > mpsi(mps, mps.begin());

  const std::istream_iterator<std::pair<std::string,std::string> > eos; 
  std::istream_iterator<std::pair<std::string,std::string> > its (is);

  std::copy(its, eos, mpsi);

  std::copy(mps.begin(), mps.end(), std::ostream_iterator<std::pair<std::string,std::string> >(std::cout, "\n"));
}