TL S y r a r b a L t i L ca u L T r S -...

9
Luca Lista S t a nd a r d T e m p l a t e L i b r a r y ( S TL ) S t a nd a r d T e m p l a t e L i b r a r y ( S TL ) L u ca L i s t a I N F N , S ez i o n e d i N ap o li

Transcript of TL S y r a r b a L t i L ca u L T r S -...

Page 1: TL S y r a r b a L t i L ca u L T r S - people.na.infn.itpeople.na.infn.it/~lista/ProgrammazioneAdOggetti/trasparenze/07... · L u ca L i s t a o a ’ u i p t i tt i G li i t e r

Luc

a L

ista

Stan

dard

Tem

plat

e L

ibra

ry (

STL

)St

anda

rd T

empl

ate

Lib

rary

(ST

L)

Luc

a L

ista

INF

N, S

ezio

ne d

i Nap

oli

Page 2: TL S y r a r b a L t i L ca u L T r S - people.na.infn.itpeople.na.infn.it/~lista/ProgrammazioneAdOggetti/trasparenze/07... · L u ca L i s t a o a ’ u i p t i tt i G li i t e r

Luc

a L

ista

La

Stan

dard

Lib

rary

La

Stan

dard

Lib

rary

La

libre

ria

stand

ard

ST

L e’

una

libr

eria

di c

lass

i di

cont

enit

ori,

algo

ritm

i ed

itera

tori

.S

TL

e’ u

na li

brer

ia g

ener

ica:

tutti

i su

oi c

ompo

nent

i son

opa

ram

etri

zzat

i med

iant

e l’

utili

zzo

dei t

empl

ate

vetto

ri, l

iste

, map

pe, …

.ve

ttori

, lis

te, m

appe

, ….

find

, rep

lace

, rev

erse

, sor

t, …

. fi

nd, r

epla

ce, r

ever

se, s

ort,

….

punt

ator

i int

elli

gent

ipu

ntat

ori i

ntel

lige

nti

Page 3: TL S y r a r b a L t i L ca u L T r S - people.na.infn.itpeople.na.infn.it/~lista/ProgrammazioneAdOggetti/trasparenze/07... · L u ca L i s t a o a ’ u i p t i tt i G li i t e r

Luc

a L

ista

� �������

�� �

� ��

���

� ���

� ��

���

� � ���

� ��

� �� �

� ��

�� �

��� �

����

Gli

itera

tori

sono

dei

pun

tato

ri ag

li el

emen

ti di

un

cont

enit

ore

e ci

perm

etto

no d

i muo

verc

i all’

inte

rno

di e

sso:

Iter

ator

i mon

odir

ezio

nali

:

Iter

ator

i bid

irez

iona

li:

Iter

ator

i ad

acce

sso c

asua

le :

Perm

etto

no d

i acc

eder

e al

l’el

emen

to

succ

essiv

o o

al p

rece

dent

e

Perm

etto

no d

i acc

eder

e si

a al

l’el

emen

to

succ

essiv

o c

he a

l pre

cede

nte

Perm

etto

no d

i acc

eder

e ad

un

qual

unqu

e el

emen

to d

el c

onte

nito

re

Page 4: TL S y r a r b a L t i L ca u L T r S - people.na.infn.itpeople.na.infn.it/~lista/ProgrammazioneAdOggetti/trasparenze/07... · L u ca L i s t a o a ’ u i p t i tt i G li i t e r

Luc

a L

ista

� ��� ��� � �

��

� ��� ��� � �

��

Un

cont

enito

re e

’ un

ogg

etto

cap

ace

di i

mm

agaz

zina

re a

ltri

ogge

tti (

i suo

i ele

men

ti) e

che

pos

sied

e m

etod

i per

acc

eder

e ai

suoi

ele

men

ti. O

gni c

onte

nito

re h

a un

iter

ator

e as

soci

ato

che

perm

ette

di m

uove

rsit

ra g

li el

emen

ti de

l con

teni

tore

.

Sequ

enze

:U

na s

eque

nza

e’ u

n co

nten

itore

di l

ungh

ezza

var

iabi

le i

cui

elem

enti

sono

org

aniz

zati

line

arm

ente

. E’

poss

ibile

agg

iung

ere

eri

muo

vere

ele

men

ti

Con

teni

tori

asso

ciat

ivi:

Una

seq

uenz

a e’

un

cont

enito

re d

i lun

ghez

za v

aria

bile

che

pe

rmet

te u

n ef

fici

ente

acc

esso

ai s

uoi e

lem

enti

basa

to s

u un

a ch

iave

.

Page 5: TL S y r a r b a L t i L ca u L T r S - people.na.infn.itpeople.na.infn.it/~lista/ProgrammazioneAdOggetti/trasparenze/07... · L u ca L i s t a o a ’ u i p t i tt i G li i t e r

Luc

a L

ista

� ��� �

!�

� ��� �

!�

vect

or:

list :

•T

empo

cos

tant

e di

ins

erim

ento

e c

ance

llazi

one

di e

lem

enti

all’

iniz

io e

alla

fine

del

vet

tore

.

•T

empo

line

are

con

il nu

mer

o di

ele

men

ti pe

r in

seri

men

to e

ca

ncel

lazi

one

di e

lem

enti

all’

inte

rno

del v

etto

re

•It

erat

ore

ad a

cces

so c

asua

le

•T

empo

cos

tant

e di

ins

erim

ento

e c

ance

llazi

one

di e

lem

enti

in

ogni

pun

to d

ella

list

a

•It

erat

ore

bidi

rezi

onal

e

Page 6: TL S y r a r b a L t i L ca u L T r S - people.na.infn.itpeople.na.infn.it/~lista/ProgrammazioneAdOggetti/trasparenze/07... · L u ca L i s t a o a ’ u i p t i tt i G li i t e r

Luc

a L

ista

" #$% &$' % #

(')** #

+')%' ,

'

" #$% &$' % #

(')** #

+')%' ,

'

•map

:

•has

h_m

ap:

Sono

cont

enito

re d

i cop

pie

( ke

y, v

alue

)e

poss

iedo

no u

n ite

rato

rebi

dire

zion

ale

•V

iene

rich

iest

o l’

oper

ator

e <

per

la c

hiav

e

•G

li el

emen

ti so

no o

rdin

ati s

econ

do la

chi

ave

•V

iene

rich

iest

a un

a fu

nzio

ne d

i has

hpe

r la

chi

ave

•N

on v

i e’

alcu

n or

dina

men

to

Page 7: TL S y r a r b a L t i L ca u L T r S - people.na.infn.itpeople.na.infn.it/~lista/ProgrammazioneAdOggetti/trasparenze/07... · L u ca L i s t a o a ’ u i p t i tt i G li i t e r

Luc

a L

ista

-. /01

2 342

-. /01

2 342

fin

d

cou

ntco

py

fill

sort

min

, max

Gli

algo

ritm

i son

o de

lle fu

nzio

ni g

loba

li ca

paci

di a

gire

su

cont

enit

ori d

iffer

enti

Sono

incl

use

oper

azio

ni d

i ord

inam

ento

( sor

t, m

erge

, min

, m

ax...

), d

i ric

erca

( fin

d, c

ount

, equ

al...

), d

i tra

sfor

maz

ione

(t

rans

form

, rep

lace

, fill

, rot

ate,

shu

ffle

...),

e g

ener

iche

op

eraz

ioni

num

eric

he (a

ccum

ulat

e, a

djac

ent d

iffer

ence

...).

Page 8: TL S y r a r b a L t i L ca u L T r S - people.na.infn.itpeople.na.infn.it/~lista/ProgrammazioneAdOggetti/trasparenze/07... · L u ca L i s t a o a ’ u i p t i tt i G li i t e r

Luc

a L

ista

#include < >

#include <algorithm>

#include <iostream>

int main() {

<int> container;

int val;

for(inti=0; i<10; i++) {

val= (int)((float)rand()/RAND_MAX*10);

container.push_back(val);}

<int>::iteratorit1;

for( it1=container.begin();it1!=container.end();it1++)

cout<< "vector: " << *it1 << endl;

find( container.begin(), container.end(), 3 );

sort( container.begin(), container.end() );

for( it1=container.begin(); it1!=container.end(); it1++)

cout<< "vector: " << *it1 << endl;

min_element( container.begin(), container.end());

return 0;

}

5 67

8 9: ;

<6 ;6

7=<7> ?7

5 67

8 9: ;

<6 ;6

7=<7> ?7

vector

vector

vector

list

list

list

Page 9: TL S y r a r b a L t i L ca u L T r S - people.na.infn.itpeople.na.infn.it/~lista/ProgrammazioneAdOggetti/trasparenze/07... · L u ca L i s t a o a ’ u i p t i tt i G li i t e r

Luc

a L

ista

#include <map>

#include <algorithm>

#include <iostream>

int main() {

map<char*,int> amap;

amap.insert( pair<char*,int>("Primo",1));

amap.insert( pair<char*,int>("Secondo",2));

cout

<< "Size

: " << amap.size() << endl;

amap["Terzo"]=3;

amap["Quarto"]=4;

cout

<< "Size

: " << amap.size() << endl;

map<char*,int>::iterator it;

for

( it=amap.begin();

it!=amap.end();

it++)

cout

<< "map

: " << it->first << " " << it->second

<< endl;

cout

<< amap.find("Terzo")->second

<< endl;

return 0;

}

@ AB

C DE F

GA F

H FIJ

BIE J FKELAAF

HELJE M

E

@ AB

C DE F

GA F

H FIJ

BIE J FKELAAF

HELJE M

E