stl-associative containers. associative containers sequence containers : "this is item 0, this...

21
STL- Associative Containers

Upload: samson-lucas

Post on 31-Dec-2015

225 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

STL-Associative Containers

Page 2: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Associative Containers

• Sequence containers :"This is item 0, this is item 1, this is item 2…“

• Associative containers :– Store items by key:

I have the word "apple"I have the word "carrot"

– No numeric index – word[0] is meaningless

Page 3: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Sets

• Set<T> – Stores set of items– One copy max of each value– Items stored according to < operator• Can change

Page 4: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Set Demo

Page 5: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

No indexes!

• No index access:

• Always need iterators:

Page 6: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Other Set Tools

• find(item) returns an iterator to item– Returns end() if not found

• erase() takes value or iterator

Page 7: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Multiset

• Same as Set, but duplicates allowed– Also in Set library

Page 8: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Grouping Things

• Complex groupings deserve struct/class– Class if has behaviors– Struct – simple data

• Do we really wantlots of structs like ?

Page 9: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Pair

• Pair template in <utility> library• Looks like:

Page 10: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Pair Use

• Only has first/second• Can "construct" with initializer list

Page 11: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Pair Use

• Can make a vector of pairs:

• But associations not explicitly stored– No order– No easy way to look up things

Page 12: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Map

• Stores a sorted list of key/value pairs

Key

A

B

C

D

E

Value

Apple

Banana

Carrot

Dingo

Elf

Page 13: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Map

• Key used as index into list– Assigning creates record

Key

A

B

C

D

E

Value

Apple

Banana

Carrot

Dingo

Elf

Page 14: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Map Gotcha

• Accessing a key adds it to the Map with default value

Page 15: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Ways to insert:

• Insertions– Map stores pairs, multiple ways to add:

Page 16: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Ways to insert:

• Each key can have only one value:

Page 17: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Iteration:

• Use iterators just like vector– Access parts with first/second

• Map stored orderedby keys

Page 18: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Find/Contains

• Can find(keyType):– No find(valueType)

Page 19: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Erase

• Erase takes key or iterator:– Not a value

Page 20: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

MultiMap

• To store list as value, could use map of vector:

• Can’t use [] with multimap

Page 21: STL-Associative Containers. Associative Containers Sequence containers : "This is item 0, this is item 1, this is item 2…“ Associative containers : –

Multimap

• Equal_range returns pair of iterators– first : First location where we found a match– second : One past last location of match– first == second : not there