Lisykset ja muutokset edelliseen versioon:

cNaytto:
========

//----------------------------------------------------------------------------
void cNaytto::etsi_jasenen_tiedot(char valinta)
{
  otsikko(valinta,"Etsi jsenen tiedot");
...
  cout << apujasen.kysymys(k) <<" >";
  getline(cin,jono);
  if ( jono == "" ) return;

  vector<int> loytyneet;
  kerho->etsi(loytyneet,k,jono);
  for (unsigned i=0; i<loytyneet.size(); i++) {
    const cJasen &jasen = kerho->anna_jasen(loytyneet[i]);
    tulosta(cout,jasen);
    odota_jotakin();
  }

}

cKerho:
=======
class cKerho {
...

  void etsi(vector<int> &loytyneet,int k,const string &jono) {
    jasenet.etsi(loytyneet,k,jono);
  }
};


cJasenet:
=========

class cVertaa2 {
  int kentta;
  const cJasenet *jasenet;
 public:
  cVertaa2(int k, const cJasenet *ijasenet) : kentta(k), jasenet(ijasenet) { }
  bool operator() (int a,int b) const { // a < b
//    string sa = jasenet->anna(a).kentta_avaimeksi(kentta);  // Olisi parempi
    string sa = jasenet->anna(a).kentta_jonoksi(kentta);
    string sb = jasenet->anna(b).kentta_jonoksi(kentta);
    return sa < sb;
  }

};

void cJasenet::etsi(vector<int> &loytyneet,int k,const string &jono)
{
  for (int i=0; i<lkm; i++) 
    if ( onko_samat(anna(i).kentta_jonoksi(k),jono) == 0  ) 
      loytyneet.push_back(i);
  sort(loytyneet.begin(),loytyneet.end(),cVertaa2(k,this));
}

