ADT Set, Map, Dictionary. Iteratorer TDDD86: DALGP. Tommy Färnqvist, IDA, Linköpings universitet



Relevanta dokument
Magnus Nielsen, IDA, Linköpings universitet

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

Tommy Färnqvist, IDA, Linköpings universitet. 1 Administrativ information Upplägg... 1

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

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

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

Tommy Färnqvist, IDA, Linköpings universitet

Intro till standardbiblioteket. Eric Elfving

Datastrukturer och algoritmer. Innehåll. Tabell. Tabell - exempel. Gränsyta till Tabell. Tabell. Modell. Hashtabell Relation, lexikon.

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 5 Erik Nilsson, Institutionen för Datavetenskap, LiU

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

TDDE44 Programmering, grundkurs

Föreläsning 14 Innehåll

729G04 PYTHON 6 JODY FOO. Department of Computer and Information Science (IDA) Linköping University, Sweden

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering, abstraktion och modellering. Tentamen

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 10 Innehåll

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

Objektorienterad Programkonstruktion

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

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

TDDC77 Objektorienterad Programmering

Föreläsning 9 Innehåll

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Datastrukturer. föreläsning 6. Maps 1

Diskutera. Hashfunktion

Föreläsning 10 Innehåll. Diskutera. Hashtabeller. Hashfunktion. hashfunktion. hashkod (ett heltal)

Innehåll. F7: Tabell, hashtabell, relation & lexikon. Gränsyta till Tabell. Tabell. Tabell Hashtabell Relation Lexikon.

Föreläsning 2 Datastrukturer (DAT037)

Sammansatta datatyper Generics: Parametrisk polymorfism

729G06 Föreläsning 1 Objektorienterad programmering

Objektorienterad programmering

Tommy Färnqvist, IDA, Linköpings universitet. 1 Prioritetsköer Heapar Tillämpning... 3

Tentamen Datastrukturer (DAT037)

Interfacen Set och Map, hashtabeller

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Inlämningsuppgift och handledning

Översikt 5 delar. 1: Fysisk representation. Binär, oktal och hexadecimal representation

Inlämningsuppgift och handledning. Föreläsning 11 Innehåll. Diskutera. Hashtabeller

Föreläsning Datastrukturer (DAT037)

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning 1 Datastrukturer (DAT037)

Föreläsning 6 Datastrukturer (DAT037)

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Föreläsning 9 Innehåll

Föreläsning 4 Innehåll

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Uno Holmer, Chalmers, :28 Uno Holmer, Chalmers, :28

Tentamen TEN1 HI

Länkade strukturer. (del 2)

Föreläsning 8. Mängd, Avbildning, Hashtabell

Föreläsning 11 Innehåll

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Algoritmer och datastrukturer 2012, fo rela sning 8

Föreläsning 18 Filer och avbildningar

Föreläsning Datastrukturer (DAT036)

Collections och datastrukturer. Kursbokens kapitel 13 och

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Programmering för språkteknologer II, HT2014. Rum

Datastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer

Samlingar Collection classes

TDDC74 Programmering, abstraktion och modellering DUGGA 2

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

Föreläsning 13 Innehåll

Grundläggande datalogi - Övning 4

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Lösningsförslag till tentamen TDP004 Objektorienterad Programmering Teoretisk del

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

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

TDDI14 Objektorienterad programmering

TDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 5 mars 2015

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Innehåll. Mina målsättningar. Vad krävs för att nå dit? Obligatoriska uppgifter. Websajten. Datastrukturer och algoritmer

Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till:

Samlingar Collection classes

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

Seminarium 2 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Värmedistribution i plåt

Tentamen Objekt-orienterad programmering med Java, 1DL100 Sommarkurs och distanskurs

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

729G04 Programmering och diskret matematik

Symboliska konstanter const

729G04 Programmering och diskret matematik. Föreläsning 7

DIVISIONSEXEMPEL RELATIONSALGEBRA OCH SQL. r s använder vi för att uttrycka frågor där ordet alla figurerar:

Databasdesign. E-R-modellen

Föreläsning 7. Träd och binära sökträd

Transkript:

Föreläsning 5 ADT Set, Map, Dictionary. Iteratorer TDDD86: DALGP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 11 september 2015 Tommy Färnqvist, IDA, Linköpings universitet 5.1 Innehåll Innehåll 1 Symboltabeller 1 1.1 Abstrakta datatyper...................................... 1 1.2 Associativa containrar i C++................................. 2 2 Iteratorer 4 5.2 1 Symboltabeller Symboltabeller Abstraktion av nyckel-värdepar Sätt in ett värde med specificerad nyckel Givet en nyckel, sök efter motsvarande värde 5.3 1.1 Abstrakta datatyper ADT Set Domän: mängder av nycklar ADT Map size() antalet nycklar i mängden contains(k) returnera true om k finns i mängden, annars false put(k) lägg till k till mängden remove(k) ta bort k från mängden Domän: mängder av poster/par (nyckel, värde) Mängderna är partiella funktioner som avbildar nycklar på värden! size() antalet par i mängden get(k) hämta informationen associerad med k eller null om någon sådan nyckel inte finns put(k,v) lägg till (k,v) till mängden och returnera null om k är ny; ersätt annars värdet med v och returnera det gamla värdet remove(k) ta bort post (k,v) och returnera v; returnera null om mängden inte har någon sådan post 5.4 5.5 1

ADT Map Exempel: Kursdatabas: (kod, namn) Associativt minne (adress, värde) Gles matris: ((rad, kolumn), värde) Lunchmeny: (dag, rätt) Statisk Map: inga uppdateringar tillåtna Dynamisk Map: uppdateringar är tillåtna ADT Dictionary Domän: mängder av par (nyckel, värde) Mängderna är relationer mellan nycklar och värden! ADT Dictionary size() antalet par i mängden find(k) returnera någon post med nyckel k eller null om inget sådant par finns findall(k) returnera en itererbar samling av alla poster med nyckel k insert(k,v) lägg till (k,v) och returnera den nya posten remove(k,v) ta bort och returnera paret (k,v); returnera null om det inte finns något sådant par entries() returnera itererbar samling av alla poster Exempel: Svensk-engelskt lexikon..., (jakt, yacht), (jakt, hunting),... Telefonkatalog (flera nummer tillåtna) Relation mellan liuid och avklarade kurser Lunchmeny (med flera val): (dag, rätt) Statisk Dictionary: inga uppdateringar tillåtna Dynamisk Dictionary: uppdateringar är tillåtna 5.6 5.7 5.8 1.2 Associativa containrar i C++ Associativa containrar Snabb åtkomst till data baserat på söknycklar följande associativa containrar är ordnade itererar man över dem erhålles elementen i nyckelordning map multimap set multiset set-containrar lagrar enbart nycklar map-containrar lagrar nyckel-värdepar - använder pair för att lagra en nyckel och ett associerat värde icke-multivarianterna tillåter enbart unika nycklar dessutom finns motsvaranade oordnade associativa containrar unordered_map unordered_multimap unordered_set unordered_multiset 5.9 Klassen pair Klass för att lagra värdepar används till exempel av alla map-containrar. har hjälpfunktionen make_pair för att skapa pair-objekt vector< pair<int, string> > v; int i = 4711; string s = "foobar"; v.push_back(make_pair(i, s)); det är enkelt att komma åt parets innehåll: pair<int, string> mypair; mypair.first = 4711; mypair.second = "foobar"; // samma som pair<int, string>(i, s); 5.10 2

Associativa containrar operationer 5.11 Associativa containrar operationer 5.12 Associativa containrar operationer 5.13 Övning räkna unika ord Skriv ett program som räknar antalet unika ord i en stor textfil 5.14 Övning räkna ord Skriv ett program som avgör vilket ord som är vanligast i en stor textfil 5.15 3

Övning anagram Skriv ett program som beräknar den största anagrammängden från en ordlista 5.16 2 Iteratorer Iterator 5.17 Containeriteratorer 5.18 Iteratorpositioner 5.19 4

Iteratorkategorier 5.20 Operationer på iteratorer 5.21 Exempel iteratoroperationer 5.22 5