2013-10-03 19 views
14

STL domanda newbie:Ricerca una mappa con limite superiore e limite inferiore

Per quanto riguarda le funzioni di std :: mappa :: upper_bound e std :: mappa :: lower_bound è esso valida per specificare una chiave che non è effettivamente presente nel la mappa?

Esempio

std::map<int,int> intmap; 
std::map<int,int>::iterator it1,it2; 

intmap[1]=10; 
intmap[2]=20; 
intmap[4]=40; 
intmap[5]=50; 

it1=intmap.lower_bound (3); // Is this valid? 
it2=intmap.upper_bound (3); // Is this valid? 

Grazie ...

+6

Sì. (15 caratteri) – kennytm

+0

Accetterò come risposta se pubblichi questo. – NeonGlow

+0

billz ha dato una spiegazione migliore su questo. – kennytm

risposta

21

Sì, sono entrambi validi.

map::lower_bound restituisce un iteratore che punta al primo elemento che non è inferiore alla chiave.

map::upper_bound restituisce un iteratore che punta al primo elemento che è maggiore della chiave.

intmap[1]=10; 
intmap[2]=20; 
intmap[4]=40; // <<---both lower_bound(3)/upper_bound(3) will points to here 
intmap[5]=50; 

lower_bound/upper_bound ritorno nella posizione in cui otterrebbe inserita valore.

nota, se si desidera controllare la chiave valore è carta o no, si potrebbe usare std::map::find

Problemi correlati