Innehåll. Pekare. Datatyper Pekare, Arrayer och Referenser. Pekare Syntax. Pekare Syntax, operatorer. 4. Standard-containers. Pekare och arrayer

Relevanta dokument
4. Standard-containers. Strömmar och filer

Innehåll. Datatyper Pekare, Arrayer och Referenser. Pekare. Pekare Syntax. Pekare Syntax, operatorerna * och & 5. Pekare och arrayer. Algoritmer.

Innehåll. Klasserna vector och deque

Innehåll. Pekare Syntax

Innehåll. Användardefinierade typer. Användardefinierade typer Kategorier. Konstruktorer. Konstruktorer Två sätt att skriva initiering av medlemmar

Programmering i C++ EDA623 Containerklasser och algoritmbibliotek. EDA623 (Föreläsning 10) HT / 33

Innehåll. 1 Funktionsmallar. 2 Pekare och konstanter. 3 Typomvandlingar. struct Name { string s; //... };

Innehåll. Pekare Exempel

Innehåll. 1 Funktionsmalllar. 2 Klassmallar. struct Name { string s; //... }; const Name & minimum ( const Name & a, const Name & b) { if(a.s < b.

Innehåll. Pekare Exempel

Innehåll. Pekaren this Självreferens. Klasser Resurshantering, representation. Överlagring av operatorer. Överlagring av operatorer

Innehåll. Parametriserade typer. Klassmallar. Klassmallen Vektor Konstructor med std::initializer_list. Klassmallen Vektor Medlemsfunktioner

Programmering i C++ EDA623 Typer. EDA623 (Föreläsning 4) HT / 33

Innehåll. Exceptionella händelser (exceptions, undantag ) Felhantering Tre nivåer av felhantering: Nivå 2: exceptions (eller returvärde)

Tommy Färnqvist, IDA, Linköpings universitet

TDIU01 - Programmering i C++, grundkurs

Innehåll. Konstruktorer vid arv Regler för basklassens konstruktor. Konstruktorer vid arv. Konstruktorer vid arv. Konstruktorer vid arv

Innehåll. Resurshantering. Resource handles. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 6. Resurshantering

Innehåll. Typomvandlingar (casting) Implicita Typomvandlingar. Typomvandlingar (casting) Implicita Typomvandlingar

Innehåll. Typomvandlingar (casting) Implicita Typomvandlingar. Typomvandlingar (type casts) Explicita, namngivna typomvandlingar (C++-11)

Innehåll. 1 volatile. 2 Kuriositeter. 3 Klasser och arv. 4 Råd och tumregler. 5 Mer om standard-containers. Trigraphs

Innehåll. EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Viktiga skillnader mot Java

TDIU01 - Programmering i C++, grundkurs

TDDC76 - Programmering och Datastrukturer

2D1387, Programsystemkonstruktion med C++ 01/02 1

Objektorienterad programmering

EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Administration. EDAf30: Programmering i C++, 7.5 hp Obligatoriska moment

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Innehåll. 1 Deklarationer, scope och livstid. 2 Användardefinierade typer. 4 In- och utmatning. 5 Operatoröverlagring. 6 namnrymder (namespace)

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Tentamen EDAF30 Programmering i C++

TDIU01 - Programmering i C++, grundkurs

Innehåll. 1 Deklarationer, scope och livstid. 2 Användardefinierade typer. 4 Operatoröverlagring. 5 In- och utmatning. 6 namnrymder (namespace)

Java, klasser, objekt (Skansholm: Kapitel 2)

Arrayer. results

Inlämningsuppgift, EDAF30, 2016

Inlämningsuppgift, EDAF30, 2018

TDDC76 - Programmering och Datastrukturer

Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {

Kapitel 6. Kapitel 6. Hakparenteser fšr att ange index float[] priser = new float[500]; frekvens[4] boolean[] flaggor;

Föreläsning 2, vecka 8: Repetition

Användning av typeid. Operatorerna typeid och. Filen typeinfo.h måste inkluderas. typeid

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Innehåll. Resource handles. Resurshantering. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 7. Resurshantering, Felhantering

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap

Intro till standardbiblioteket. Eric Elfving

TDIU01 - Programmering i C++, grundkurs

Algoritmbiblioteket (STL) Designstrategi Generiska algoritmer som fungerar på godtyckliga samlingsdatatyper, vilka har iteratorer.

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Föreläsning 6: Metoder och fält (arrays)

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Standard Template Library STL. Behållarklasser

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Övning från förra gången: readword

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Minnestilldelning (allokering) och frigörande (avallokering) av minne

Sammansatta datatyper Generics: Parametrisk polymorfism

Introduktionslaboration

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= "Nils"; // längd = 5 bytes

Classes och Interfaces, Objects och References, Initialization

Operatoröverlagring. endast operatorsymboler definierade i C++ kan överlagras = += -= *= /= %= ^= &= = <<= >>= < > <= >= ==!= && > ->*, [ ] ( )

Tentamen *:85/2I4123 C

Kapitel 4 - Mallar. Kapitel 4. Introduktion till mallar STL. 2D1387 Programsystemkonstruktion med C++ 1

Kapitel 4. Funktionsmallar. Mallar. Introduktion till mallar STL

Kapitel 4. Funktionsmallar. Mallar. Introduktion till mallar STL

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Klasser och objekt, referenser Grundkurs i programmering med Python

Assemblerprogrammering för ARM del 3

Klassdeklaration. Metoddeklaration. Parameteröverföring

Typkonvertering. Java versus C

Metoder - en funktion: medel

Innehåll. 1 Typdeklarationer och typomvandling 2 Resurshantering. 3 Objektorientering, kort repetition. 4 Klasser

Föreläsning 6 pekare och pekare tillsammans med arrayer

Pekare. Pekare. Varför använder vi pekare? Vad är en pekare? Pekare. Deklaration/initiering av pekare

Objekt och klasser - Introduktion

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Objektorienterad programmering i Java

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

TDIU01 Programmering i C++

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Lektionsuppgifter. TDDI14 Objektorienterad programmering. Lektionsplanering Lektion Lektion Lektion

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Arrayer (fält)

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Introduktion till algoritmer - Lektion 3 Matematikgymnasiet, Läsåret Lektion 3

Parameteröverföring. Exempel. Exempel. Metodkropp

OOP Objekt-orienterad programmering

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Programmering A. Johan Eliasson

Transkript:

Innehåll EDAF30 Programmering i C++ 4. Standard-containers. Sven Gestegård Robertz Datavetenskap, LTH 2016 1 Semantik och syntax Referenser 2 Arrayer 3 Containers Sekvenser 4. Standard-containers. 2/1 Datatyper, Arrayer och Referenser (heltalstyp, aritmetik, till skillnad från i Java) Referenser (konstanta och kan inte vara null ) 1 Arrayer (lågnivå sammanhängande sekvens av objekt) 1 Egentligen inte en typ, utan ett alias till ett objekt : Semantik och syntax 4. Standard-containers. 3/39 Påminner om referenser i Java, men en pekare är minnesadressen till ett objekt en pekare är själv ett objekt (till skillnad från en referens) kan tilldelas och kopieras har en adress måste inte initialiseras när den definieras men får då ett odefinierat värde, på samma sätt som andra variabler fyra möjliga tillständ 1 pekar på ett objekt 2 pekar på adressen omedelbart efter ett objekt 3 pekar på ingenting: nullptr. Före C++11: NULL 4 är ogiltig (allt annat än ovanstånde) kan användas som ett heltalsvärde aritmetik, tilldelning, etc. Var väldigt försiktiga! : Semantik och syntax 4. Standard-containers. 4/39 Syntax Deklaration T* T* ptr ; // en pekare till T Referensoperatorn &, address of Ger adressen till ett objekt Dereferensoperatorn * Ger värdet som pekaren pekar på, dvs det vars adress ligger lagrad i pekarvariabeln int k; int * p; p = &k; *p = 19; : Semantik och syntax 4. Standard-containers. 5/39 Syntax, operatorer I en deklaration: *: pekare till int *p; : p är en pekare till en int void swap(int*, int*); : funktion som tar två pekare &: referens till int &r; : r är en referens till en int I ett uttryck: prefix *: innehållet i *p = 17; objektet som p pekar på tilldelas värdet 17 prefix &: addressen till, pekare till (address-of) int x = 17; int y = 42; swap (&x, &y); Anropa swap() med pekare till x och y : Semantik och syntax 4. Standard-containers. 6/39

Var tydlig med deklarationer Sammanfattning Använd tumregeln: "en deklaration per rad" int * a; // pekare till int int *b; // pekare till int int c; // int - variabel int * d, e; // d är pekare till int, e är int - variabel int *f, *g; // f och g är pekare till int typ *p; // p får typen " pekare till typ" p = &v; // p tilldelas adressen till v: "p pekar på v" *p = 12; // Det som p pekar på tilldelas vä rdet 12 p1 = p2; // p1 pekar på samma som p2 pekar-tilldelning *p1 = *p2; // Det som p1 pekar på tilldelas // vä rdet som p2 pekar på värde-tilldelning är objekt : Semantik och syntax 4. Standard-containers. 7/39 : Semantik och syntax 4. Standard-containers. 8/39 och referenser Pekaranrop I vissa fall används pekare istället för referenser för att göra referensanrop : Exempel: Byta plats på två heltalsvärden void swap2 (int * a, int * b) if(a!= nullptr && b!= nullptr ) int tmp =*a; *a = *b; *b = tmp ;... och anv ä ndning : int x, y;... swap2 (&x, &y); Notera: en pekare kan vara nullptr eller oinitierad att dereferera sådan pekare ger undefined behaviour Referenser Referenser liknar pekare, men En referens är ett alias till en variabel kan inte ändras (fås att peka på en annan variabel) måste initieras är inget objekt (har ingen address i minnet) För dereferens används inte operatorn * Att använda en referens är att använda objektet som refereras. Använd referenser om du inte måste använda pekare. T ex om en variabel får ha värdet nullptr ( inget objekt ) eller om man behöver kunna ändra ( peka om ) pekaren Mer om detta senare. : Semantik och syntax 4. Standard-containers. 9/39 : Referenser 4. Standard-containers. 10/39 och referenser Arrayer ( C-arrayer, built-in arrays ) Pekarversion och referensversion av swap // Referensversionen void swap (int & a, int & b) int tmp = a; a = b; b = tmp ; int m=3, n =4; swap (m,n); Referensversionen används // Pekarversionen void swap (int * pa, int * pb) if(pa!= nullptr && pb!= nullptr ) int tmp = *pa; *pa = *pb; *pb = tmp ; En sekvens av värden av samma typ Likt Java för primitiva typer men inget skyddsnät Skillnad från Java en array vet inte hur stor den är programmerarens ansvar Kan inehålla element av godtycklig typ Skillnad från Java, som bara kan ha referenser till objekt som element Deklareras T a[storlek]; (Skillnad från Java) Storleken måste vara en konstant. (Skillnad från C99) swap (&m,&n); Pekarversionen används NB! Värdeanrop: adressen kopieras : Referenser 4. Standard-containers. 11/39 Arrayer 4. Standard-containers. 12/39

Arrayer Representation i minnet Elementen i en array kan vara av godtycklig typ Java: endast primitiv typ eller referens C++: objekt eller pekare Exempel: array av Point struct Point int x; int y; ; Point ps [3]; ps: x: y: x: y: x: y: ps[0] ps[1] ps[2] Arrayer ( C-arrayer, built-in arrays ) Deklaration utan initiering int x [7]; // inneh å ller odefinierade vä rden Deklaration och initiering av int-array int a[7] 0, 1, 2, 3, 4, 5, 6; int b [20] 0, 1, 2, 3; // resten av elementen initieras till 0 Utelämnande av längden int b[] 1, 1, 0, 1, 0, 0, 1; Initiering med = som i C int a[7] = 0, 1, 2, 3, 4, 5, 6; int b[] = 1, 1, 0, 1, 0, 0, 1; Arrayer 4. Standard-containers. 13/39 Arrayer 4. Standard-containers. 14/39 C-arrayer tilldelning, djup kopiering int a [7] = 0, 1, 2, 3, 4, 5, 6; int b [7] = 1, 1, 0, 1, 0, 0, 1; Ej tillåtna tilldelningar b = a; invalid array assignment b = 1, 1, 0, 1, 0, 0, 1; assigning from an initializer list Arrayer kan adresseras m.h.a. pekare float f [4]; // 4 st float float * pf; // pekare till float pf = f; // samma som pf = &f[0] float x = *( pf +3); // Alt. x = pf [3]; x = pf [3]; // Alt. x = *( pf +3); Korrekt men omständligt: Kopiera elementvis for ( int i =0; i!= 7; ++i) b[i]=a[i]; Arrayer 4. Standard-containers. 15/39 Arrayer : 4. Standard-containers. 16/39 Vad betyder array-indexering egentligen? Funktionsanrop Uttrycket a[b] är ekvivalent med *(a + b) (och därmed med b[a]) Definition För en pekare, T* p, och ett heltal i, så definieras p + i som p + i*sizeof(t) Exempel: förvirrande kod int a[] 1,4,5,7,9; cout << a [2] << " == " << 2[a] << endl ; cout << 4[a] << " == " << a [4] << endl ; 5 == 5 9 == 9 Funktion för nollställning av heltalsarrayer void zero (int * x, size_t n) for (int * p=x; p!= x+n; ++p) *p = 0;... int a [5]; zero (a,5); Namnet på en array i ett uttryck tolkas som pekare till första elementet : array decay a &a[0] Indexering av arrayer är oftast tydligare void zero (int x[], size_t n) for ( size_t i=0; i!= n; ++i) x[i] = 0; I funktionsparametrar är T a[] ekvialent med T* a. (Syntaktiskt socker) T* används oftast Arrayer : 4. Standard-containers. 17/39 Arrayer : 4. Standard-containers. 18/39

Multidimensional arrays Initiering av tabeller med initierarlista Flerdimensionella arrayer Finns (egentligen) inte i C++ utan är arrayer av arrayer Ser ut som i Java Java: array av referenser till arrayer C++: två alternativ Array av arrayer Array av pekare (till första elementet i en array) 3 rader, 4 kolumner int a [3][4] = 0, 1, 2, 3, /* initierare för rad 0 */ 4, 5, 6, 7, /* initierare för rad 1 */ 8, 9, 10, 11 /* initierare för rad 2 */ ; I stället för kapslade initierarlistor kan man skriva: int a [3][4] = 0,1,2,3,4,5,6,7,8,9,10,11; Flerdimensionella arrayer lagras som en array i minnet. Arrayer : 4. Standard-containers. 19/39 Arrayer : 4. Standard-containers. 20/39 Flerdimensionemma arrayer i minnet En deklaration T array[4] lagras i minnet med fyra element av typen T, efter varandra: T T T T För deklarationen int a[3][4] läggs 3 st int[4] ut efter varandra: int[4] int[4] int[4] Varje int[4] har strukturen int int int int Alltså läggs int[3][4] ut som int int int int int int int int int int int int Flerdimensionella arrayer int m [2][3]; // En 2x3 - matris m [1][0] = 5; int * p; p = m; // Fungerar inte! p = &m [0][0]; *p = 2; p[2] = 11; int * q=m [1]; q[2] = 7; Arrayer : 4. Standard-containers. 21/39 Arrayer : 4. Standard-containers. 22/39 Parametrar av typ flerdimensionella arrayer // Ett sätt att deklarera parametern void printmatr (int (*a)[3], int n); // Ett annat. tydligare? void printmatr (int a [][3], int n) for (int i =0; i!=n;++ i) for ( int j =0; j!=3;++ j) cout << a[i][j] << " "; cout << endl ; Arrayer : 4. Standard-containers. 23/39 Initiering och anrop void printmatr (int a[][3], int n); int a [4][3] 1,2,3,4,5,6,7,8,9,10,11,12; int b [4][3] 1,2,3,4,5,6,7,8,9,10,11,12; printmatr (a,4); cout << " -----------------" << endl ; printmatr (b,4); 1 2 3 4 5 6 7 8 9 10 11 12 ----------------- 1 2 3 4 5 6 7 8 9 10 11 12 Arrayer : 4. Standard-containers. 24/39

Containerklasser Klassificering Sekvenser (homogena) vector<t> deque<t> list<t> Associativa containers (finns även unordered) map<k,v>, multimap<k,v> set<t>, multiset<t> Heterogena sekvenser (inte containers ) tuple<t1, T2,...> pair<t1,t2> Operationer i klassen vector v. clear (), v. size (), v. empty () v. push_back (), v. pop_back () v. front (), v. back (), v.at(i), v[i] v. assign (), v. insert (), v. emplace () v. resize (), v. reserve () Ytterligare operationer i klassen deque d. push_front (), d. pop_front () Containers 4. Standard-containers. 25/39 Containers : Sekvenser 4. Standard-containers. 26/39 Konstruktorer och funktionen assign Medlemsfunktionen assign, exempel Konstruktor och assign finns i tre varianter: fill: n stycken element med samma värde initializer list void assign ( size_type n, const value_type & val ); void assign ( initializer_list <value_type > il ); range: kopierar från first till last (exkl last, [first, last) ) template <class InputIterator > void assign ( InputIterator first, InputIterator last ); vector <int > v; int a[]0,1,2,3,4,5,6,7,8,9; v. assign (3,1); v. assign (11,13,15,17); length = 4: [11][13][15][17] v. assign (a, a+5 ); std :: deque <int > d; d. assign (v. begin (), v.end () ); print_seq (d); length = 3: [1][1][1] length = 5: [0][1][2][3][4] length = 5: [0][1][2][3][4] Exempel på iteratorer Containers : Sekvenser 4. Standard-containers. 27/39 Containers : Sekvenser 4. Standard-containers. 28/39 Medlemsfunktioner push och pop push lägger till ett element, storleken ökar pop tar bort ett element, storleken minskar *_back opererar på slutet, finns i båda void push_back (const value_type & val ); // copy void pop_back (); bara i deque: *_front void push_front (const value_type & val ); // copy void pop_front (); Iterator Pekarliknande variabel som används för att genomlöpa en struktur (datasamling) Exempel vector <double > v (4); vector <double >:: iterator it; for (it=v. begin (); it!= v.end (); ++ it) *it = 0; for ( auto it=v. begin (); it!= v.end (); ++ it) // med auto (C ++11) *it = 0; for ( double &e : v) // Ekvivalent i C ++11 e = 0; Containers : Sekvenser 4. Standard-containers. 29/39 Containers : 4. Standard-containers. 30/39

Funktioner som returnerar iteratorer och som finns i alla containerklasser + klassen string begin() end() rbegin() rend() samt: ger en iterator som pekar på det första elementet ger en iterator som pekar på ett tänkt element efter det sista elementet ger en reverserad iterator som pekar på det sista elementet ger en reverserad iterator som pekar på ett tänkt element före det första elementet cbegin () rcbegin () cend () rcend () Operationer på en sekvens med iteratorer som parametrar (iteratorintervallet [i,j) betecknar intervallet från och med i till och med positionen före j) sekv<typ> s(i,j); konstruktor, s initeras med [i,j) s.assign(i,j); s = elementen i intervallet [i,j)... s.insert(p,e); sätter in värdet e i positionen (iterator) p s.insert(p,n,e); sätter in n stycken e i positionen p s.insert(p,i,j); sätter in elementen i [i,j) i pos. p s.erase(p); s.erase(p,p2); tar bort elementet i position p från s tar bort elementen i [p,p2)från s Containers : 4. Standard-containers. 31/39 Containers : 4. Standard-containers. 32/39 Exempel: vector::assign, vector::insert och vector::erase int a[] 1,2,3,4; vector <int > v; v. assign (a, a +4); length = 4: [1][2][3][4] v. insert (v.begin ()+2, 3, 9); length = 7: [1][2][9][9][9][3][4] v. erase (v. begin ()+5); length = 6: [1][2][9][9][9][4] v. erase (v. begin (),v. begin ()+2); length = 4: [9][9][9][4] Associativa containers Tabeller med söknycklar t.ex. telefonlista med 2 kolumner (namn, telnr) där namnet utgör söknyckel Implementering i form av standardklasser map<nyckel,värde> multimap<nyckel,värde> set<nyckel> multiset<nyckel> Varje nyckel förekommer precis en gång En nyckel kan förekomma mer än en gång Varje nyckel förekommer precis en gång En nyckel kan förekomma mer än en gång set är i princip en map utan värden. Containers : 4. Standard-containers. 33/39 Containers : 4. Standard-containers. 34/39 <set>: std::set void test_set () std :: set <int > ints 1,3,7; ints. insert (5); for ( auto x : ints ) cout << x << " "; cout << endl ; auto has_one = ints. find (1); if( has_one!= ints.end ()) cout << " one is in the set \n"; else cout << " one is not in the set \n"; 1 3 5 7 one is in the set Eller if( ints. count (1)) Containers : 4. Standard-containers. 35/39 <map>: std::map map <string, int > msi; msi. insert ( make_pair ("Kalle ", 1)); msi. emplace ("Lisa ", 2); msi["kim"]= 5; for ( auto & a: msi) cout << a.first << " : " << a. second << endl ; cout << " Lisa --> " << msi.at(" Lisa ") << endl ; cout << " Hasse --> " << msi[" Hasse "] << endl ; auto nisse = msi.find (" Nisse "); if( nisse!= msi.end ()) cout << " Nisse : " << nisse ->second << endl ; else cout << " Nisse not found \n"; Kalle : 1 Kim : 5 Lisa : 2 Lisa --> 2 Hasse --> 0 Nisse not found Containers : 4. Standard-containers. 36/39

Läsanvisningar En std::set är i princip en std::map utan värden Operationer på std::map insert, emplace, [], at, find, count, erase, clear, size, empty, lower_bound, upper_bound, equal_range Operationer på std::set insert, find, count, erase, clear, size, empty, lower_bound, upper_bound, equal_range Referenser till relaterade avsnitt i Lippman och Referenser 2.3 Arrayer och pekare 3.5 Flerdimensionella arrayer 3.6 Sekvenser 3.3, 9.1, 9.2, 9.3.1 9.3.3 3.4, 9.2.1 Associativa containers 11.1 11.3.2 Containers : 4. Standard-containers. 37/39 Sammanfattning 4. Standard-containers. 38/39