You are on page 1of 10

MAPS

Mt ban l mt chui cc cp, ni mt gi tr duy nht c kt hp vi mi kha duy nht


nh hnh. 14.6. Thu hi cc gi tr da trn phm v rt nhanh. Chng ta nn xc nh cha kha c
c gi tr lin quan

Fig 14.5: Cp kha (gi tr) trong map.
Map thng c gi l mt mng kt hp. iu quan trng l s dng ton t operator nh di
y:
phone [ John ] =1111
iu ny to ra mt mc nhp cho "John" v cc cng s (tc l gn ) gi tr t 1111 ti n . in
thoi l mt i tng bn . Chng ta c th thay i gi tr , nu cn thit, nh sau:
Phone[ John]=9999
iu ny thay i gi tr 1111-9999 . Chng ti cng c th chn v xa bt c ni no trong cp
bn s dng Insert ( ) v xa ( ) chc nng . Hm thnh vin quan trng ca lp bn c lit k
trong Bng 14.13
Table 14.12 Hm thnh vin quan trng ca lp map





Hm Nhim v
begin() tham chiu n phn t u tin
clear() Xa mi phn t t map
Empty() Quyt nh map trng hay khng
End() Cung cp cho mt tham chiu n cui map
Erase() Xa phn t ch nh
Find() Tm v tr ca phn t ch nh
Insert() Chn phn t
Size() a ra kch thc ca map
Swap() Trao i cc yu t ca bn nht nh vi
nhng cch gi bn

Chng trnh 14.13 cho thy mt v d n gin ca mt bn c s dng nh mt mng kt
hp. Lu rng tiu <map> phi c bao gm.



HIDEN



HIDEN

Chc nng i tng thng c s dng nh l i s nht nh v cc thut ton. V d, bo
co
Sort(array, array+5, greater<int>());
s dng hm greater<int>() sp xp cc phn t trong mng theo th t gim dn
Ngoi so snh, STL cn cung cp nhiu hm khc thc hin cc hot ng s hc hay logic
nh trong bn 14.14. Mun s dng cc hm, phi c cu lnh include<functional> header file
Bng 14.14
Hm Loi M t
Divide<T> S hc x/y
Equal_to<T> Quan h x==y
Greater<T> Quan h x>y
Greater_equal<T> Quan h x>=y
Less<T> Quan h x<y
Less_equal<T> Quan h x<=y
Logical_and<T> logic x&&y
Logical<not> logic !x
Logical<or> logic x||y
Minus<T> S hc x-y
Modulus<T> S hc x%y
Negate<T> S hc -x
Not_equal_to<T> Quan h x!=y
Plus<T> S hc x+y
Multiplies<T> S hc x*y


Ch : Bin x,y trong class T s c thay bi cc i s tng ng
Chng trnh 14.4 s dng hm greater<>() sp xp:
#include<iostream>
#include<algorithm>
#include<functional>
using namespace std;
int main()
{ int x[]={10,50,30,40,20);
int y[]={70,90,60,80};
sort(x,x+5,greater<int>());
sort(y,y+4);
for(int i=0;i<5;i++)
cout<<x[i]<< ;
cout<<\n;
for(int j=0;j<4;j++)
cout<<y[j];<< ;
cout<<\n;
int z[9];
merge(x,x+5,y,y+4,z);
for(i=0;i<9;i++)
cout<<z[i[<< ;
cout<<\n;
return(0);
}

Output: 50 40 30 20 10
60 70 80 90
50 40 30 20 10 60 70 80 90
Ch : Chng trnh to ra hai mng x v y v khi to chng vi gi tr quy nh Chng trnh sau
sp xp c hai bng cch s dng thut ton sort(). Lu rng x c sp xp
bng cch s dng hm greater<int>() v y c sp xp m khng c n v do x l trong th t
gim dn.
Cui cng chng trnh kt hp c hai mng v hin th ni dung ca mng sp nhp.
Lu cc dng ca hm merge0 v kt qu.
TM LI
Tp hp chung cc lp v hm gi l th vin th vin khun mu chun (STL). STL l mt thnh
phn ca th vin chun C++
STL bao gm 3 thnh phn: containers (thng), algorithms (thut ton), and
iterators (vng lp).
Container l i tng cha d liu ca cng loi. Container c chia thnh
ba loi chnh: tun t, kt hp, v ngun gc.

HIDEN


Review Question
14.1 STL l g? N khc vi th vin chun ca C++ nh no? Ti sao n
quan trng trong lp trnh?
14.2 Lit k ba loi container.
14.3 S khc bit ln gia mt container trnh t v mt lin kt l g
container?
14,4 tnh hung tt nht cho vic s dng cc thng cha chui l g?
14,5 tnh hung tt nht cho vic s dng cc thng cha lin kt l g?
14.6 Mt iterator l g? c im ca n l g?
14,7 Thut ton l g? Lm th no cc thut ton STL khc vi
cc thut ton thng thng?
14.8 Lm th no c cc thut ton STL thc hin?
14.9 Phn bit gia nhng iu sau y :
(a) lists and vectors
(b) sets and maps
(c) maps and multimaps
(d) queue and deque
(e) arrays and vectors
14.10 So snh cc c tnh hiu sut ca ba container th t.
14.11 ngh thng cha thch hp cho cc ng dng sau :
(a) Chn mt sau ca mt container.
(b) chn thng xuyn v xa c hai u ca mt container.
(c) chn thng xuyn v xa b gia mt container.
(d) thng xuyn truy cp ngu nhin ca cc yu t .
14.12 ng hay sai .
( a) lp l mt hnh thc tng qut ca con tr.
(b) Mt mc ch ca mt iterator l kt ni cc thut ton container.
(c) cc thut ton STL l cc hm thnh vin ca container.
(d) Cc kch thc ca mt vector khng thay i khi thnh phn ca n c loi b.
( e) thut ton STL c th c s dng vi mng c - nh th no.
(f) Mt lp lun lun c th di chuyn qua li thng qua mt container.
(g) Hm thnh vin end( ) tr v mt tham chiu n phn t cui cng trong
container.
(h) Hm thnh vin back( ) loi b cc yu t mt sau ca container.
(i) sort() i hi mt iterator truy cp ngu nhin .
(j) Mt map c th c hai hoc nhiu hn cc yu t c gi tr quan trng nh nhau

Bi tp sa li:
14.1 Xc nh li trong chng trnh sau y
#include <iostream.h>
#include <vector>
#define NAMESIZE 40
using namespace std;
class EmployeeMaster
{
private:
char namefNAMESIZE];
int id;
public:
EmployeeMaster()
{
strcpy(name, ");
id = 0;
}
EmployeeMaster(char name[NAMESIZE], int id)
:id(1d)
{
strcpy(this->name, name);
}
EmployeeMaster* getValuesFromuser()
{
EmployeeMaster*temp=new ErrployeeMaster();
cout<<endl<< "Enter user name : ";
cin>>temp->name;
cout<<endl<<"Enter user ID : ";
cin>>temp->id;
return temp;
void displayRecord()
{
cout endl "Name : ' name;
cout endl "ID : " id endl;
)
void main()
{
vector <EmployeeMaster*> emp;
EmployeeMaster *temp = new EmployeeMaster();
emp.push_back(getValuesFromUser());
emp[0]->displayRecord();
delete temp;
temp=new EmployeeMaster('AlanKay", 3);
emp.push_back(temp);
emp[emp.capacity()]->displayRecord();
emp[emp.size()]->displayRecord();
}




























14.2 Xc nh li trong chng trnh sau y

#include <iostream>
#include <vector>
using namespace std;
int main()
{ vector <int> v1;
vl.push_back(10);
vl.push_back(30);
vector <int> v2;
v2.push_back(20);
v2.push_back(40);
if(vl==v2)
cout"vectors are equal";
else
cout"vectors are unequal\t";
vl.swap(20);
for(int y=0; y<vl.s1ze(); y++)
{
coutvl=vl[y]" ;
cout"v2="v2[y] ;
}
return 0;
}
14.3 Identify the error in the following program.
#include<iostream>
#include<list>
void main()
{
list <1nt> 11;
U.push_front(10);
1l.push_back(20);
U.push_front(30);
1l.push_front(40);
U.pushback(lO);
1l.pop_front(40):
11.reverse();
1l.unique();
}

Cc bi tp lp trnh:
14.1 Vit mt on m sau y :
(a) nh ngha mt vector v vi kch c ti a l 10
(b) Thit lp cc yu t u tin ca v l 0
(c) Thit lp phn t cui cng ca v l 9
(d) Thit lp cc yu t khc l 1
(e) Hin th cc ni dung ca v
14.2 Vit chng trnh s dng thut ton find() xc nh v tr ca
mt gia tr trong th t container
14.3 Vit chng trnh bng cch s dng thut ton count() m c
bao nhiu phn t trong mt container c gi tr xc nh .
14.4 To mt mng vi s chn v mt danh sch vi s l. hp nht hai
trnh t ca cc s vo mt vector bng cch s dng thut ton merge().
Hin th vector.
14.5 To mt lp sinh vin bao gm tn hc sinh v m sinh vin. To
nm i tng ca lp ny v lu tr chng trong mt danh sch to
mt phone_lit. Vit mt chng trnh s dng danh sch ny hin th
tn sinh vin nu m sinh vin c a ra v ngc li.
14.6 Lm li bi tp 14.17 s dng 1 b.
14.7 Mt bng cho mt danh sch cc mu xe v s lng cc n v bn
ra mi loi trong mt thi gian quy nh. Vit mt chng trnh lu
tr bng ny trong mt container ph hp, hin th tng tc tng gi tr
ca mt m hnh bn, a ra gi ca m hnh .
14.8 Vit chng trnh chp nhn mt danh sch mua sm ca nm mt
hng t bn phm v lu tr chng trong mt vector. M rng chng
trnh thc hin nhng iu sau y:
(a) xa mt mc quy nh trong danh sch
(b) thm mt mc ti mt a im quy nh
(c) thm mt mc vo cui
(d) in cc ni dung ca vector

You might also like