programozas c++ list map
Post on 08-Apr-2015
138 Views
Preview:
TRANSCRIPT
Korszerű programozási technikák
gyakorlat
list, map
Pannon Egyetem,Számítástudomány Alkalmazása Tanszék
2010.09.30.
Pannon Egyetem, Számítástudomány Alkalmazása Tanszék
7
Példa
Írjunk programot, mely osztályzatokat tárol egy list-ben.
Az adatokat 0-ig adjuk be. A bevitelt követően írassuk ki az
elemeket és számoljuk ki azok átlagát!
Írjuk ki, hogy milyen osztályzatok szerepeltek bevitelkor
(természetesen mindegyiket csak 1-szer)
Pannon Egyetem, Számítástudomány Alkalmazása Tanszék
16
Példa#include <iostream>
#include <string>
using namespace std;
int main(){
string s1(1,'a');//1 db a
string s2("szo");
string s3(s2);
cout<<"s1:"<<s1<<endl<<"s2:"<<s2<<endl<<"s3:"<<s3;
s1='b';
s2="word";
s3=s1;
cout<<"s1:"<<s1<<endl<<"s2:"<<s2<<endl<<"s3:"<<s3<<endl;
s1=s1+'2';
s2=s2+"word2";
s3=s3+s2;
cout<<"s1:"<<s1<<endl<<"s2:"<<s2<<endl<<"s3:"<<s3<<endl;
s3=s2[0];
s3+=s1[1];
cout<<"s1:"<<s1<<endl<<"s2:"<<s2<<endl<<"s3:"<<s3<<endl;
//at() (out_of_range), [] ...
return 0;
}
s1:a
s2:szo
s3:szo
s1:b
s2:word
s3:b
s1:b2
s2:wordword2
s3:bwordword2
s1:b2
s2:wordword2
s3:w2
Pannon Egyetem, Számítástudomány Alkalmazása Tanszék
19
map
Deklarációja:
map header-ben
std névtérben
map<kulcs,érték> osztálysablon segítségével
Feladata:
Olyan tároló, melyben kulcs alapján (tetszőlegesen rendezhető típus) a lehető leggyorsabban találjuk meg az értékeket.
Tároló létrehozása:
map<kulcs típusa, érték típusa>tároló
Például:
map<string, int>m;
Tároló bővítése (kulcs, érték) párral:
tároló[kulcs]=érték;
Például:
M[„Joe”]=13;
Megjegyzés:
Map a kulcsban egy értéket tárol, ha egy kulcs már létezik az =operátor az értéket felülírja
Pannon Egyetem, Számítástudomány Alkalmazása Tanszék
20
map Bejárás:
tároló.begin() .. (iterátor) .. tároló.end();
* iterator pair (kulcs, érték) pár típusú;
melynek .first mezője a kulcs
.second mezője az érték
Példa:
for(map<string,int>::iterator i=m.begin(); i!=m.end.();i++)
cout<<(*i).first<<’:’<<i->second<<endl;
Megjegyzés: *i = i->
Adott kulcsú elem értékének lekérdezése (referencia):
tároló[kulcs] //&érték
Példa:
m[„Joe”] //13
Elem törlése:
tároló.erase (iterator)
Elem iterátorának keresése kulcs szerint
tároló.find(kulcs)
Példa:
m.erase(m.find(„Joe”));
Pannon Egyetem, Számítástudomány Alkalmazása Tanszék
21
Példa#include <iostream>
#include <string>
#include <map>
using namespace std;
int main(){
map<string, int> m;
m["Joe"]=10;
m["Jack"]=5;
m["Mike"]=13;
for(map<string,int>::iteratori=m.begin();i!=m.end();i++)
cout<<i->first<<':'<<i->second<<'\n';
cout<<m["Mike"]<<endl;
m.erase(m.find("Joe"));
for(map<string,int>::iterator i=m.begin();i!=m.end();i++)
cout<<i->first<<':'<<i->second<<'\n';
return 0; }
Jack:5
Joe:10
Mike:13
13
Jack:5
Mike:13
Pannon Egyetem, Számítástudomány Alkalmazása Tanszék
22
Feladat
Írjunk programot C++ nyelven, mely neveket és
telefonszámokat olvas be (i/n) alapján.
A felvitelt követően adjon lehetőséget név szerinti keresésre.
Ha az adott név nem szerepel a felvitt adatok között fűzük
hozzá.
Esetleg
a program lehet menüvezérelt
top related