>>329
意味わかんないかな?
こんなのは使わんけど。
#include <iostream>
#include <map>
#include <string>

template<class T,class U>
struct TorU : std::map<T,U>::iterator
{
  typedef typename std::map<T,U>::iterator base;
  TorU(std::map<T,U>& m) : base(m.begin()){}
  operator T(){ return base::operator ->()->first; }
  operator U(){ return base::operator ->()->second; }
};

int main()
{
  using namespace std;
  map<int,string> cs;
  cs.insert(pair<int,string>(0,"ring 0")) ;
  cs.insert(pair<int,string>(1,"ring 1")) ;
  TorU<int,string> tu(cs);
  while(tu != cs.end()){
    cout<<(int)tu<<' '<<(string)tu<<'\n';//castめんどくせー
    ++tu;//ここがポイントなのよ
  }
}