>>70
素直に map を 3 つ作るのはダメなんですか?

#include <algorithm>
#include <iostream>
#include <map>
#include <string>

struct A {
  std::string name;
  std::string tel;
  std::string mail;
  A(const char *name_, const char *tel_, const char *mail_)
    : name(name_), tel(tel_), mail(mail_)
  {}
};

std::ostream& operator<<(std::ostream& ostream, const struct A& a)
{
  ostream <<"name = " << a.name << ", tel = " << a.tel << ", mail = " << a.mail;
  return ostream;
}

struct Aprint {
  void operator()(const std::pair<std::string, struct A*>& pr)
  {
    std::cout << *pr.second << std::endl;
  }
};

// 続く