Kurssiaiheet 5, 6 ja 7

Itseopiskelu (videot ja kalvot suomeksi)

Standard Template Library (STL)

STL:n johdanto video

STL:n säiliöt video

STL:n säiliöiden tehokkuus video

STL:n iteraattorit video

STL:n iteraattoreiden tehokkuus ja iteraattorikategoriat video

STL kalvot

Huom Videossa nimeltä STL säiliöiden tehokkuus on taulukko, jonka otsikko on Säiliön valinta tehokkuuden perusteella. Videossa esitetyssä taulukossa on virheitä. Kuitenkin kalvojen tiedostossa esitetty taulukko on oikein.

Viikko05 - Sanasto

STL voidaan jakaa kolmeen osaan. Mitä ne ovat?
Mitä tietoja STL-dokumentaatio sisältää useimpien algoritmien suoritustehokkuudesta?
C++-ohjelmoijalle on tärkeää osata käyttää STL:ää, koska
STL-säiliöiden päätyypit ovat sarjat ja assosiatiiviset taulukot. Mitkä ovat sarjojen pääominaisuudet?
Kun kyseessä on assosiatiivinen taulukko
Mitkä väitteet pätevät assosiatiivisen säiliön valinnassa?
Olkoon \(X\) STL-säiliö ja \(Op1\) jokin perustoiminto (esimerkkihaku arvon perusteella). On mahdollista, että STL:ssä ei ole funktiota, joka tekee \(Op1\) \(X\):lle. Tähän on kaksi syytä. Yksi syy on se, että \(Op1\):n tekeminen \(X\):lle on joko mahdotonta tai siinä ei ole mitään järkeä. Mikä on toinen syy?
Missä seuraavista tapauksista STL tarjoaa funktion, jolla on vakioaikainen tehokkuus?
Kun kirjoitetaan tehokasta koodia, ohjelmoijan tulisi valita säiliöt siten että..
Mitkä seuraavista väitteistä pätevät STL:n iteraattoreille?
Oletetaan, että \(i1\) ja \(i2\) ovat iteraattoreita jollekin sarjatietorakenteelle. Jos \(i2 < i1\) on tosi, mikä seuraavista on oikein?
Oletetaan, että \(i1\) ja \(i2\) ovat iteraattoreita kahdesta eri kategoriasta. Mikä seuraavista on totta?
Mitkä väitteistä ovat totta seuraaville iteraattorikategorioille?
Muotoile kurssin kannalta keskeinen kysymys, johon tämän viikon videot antavat vastauksen.
Minkä videon aiheesta pitäisi erityisesti keskustella keskustelutilaisuudessa?
Oliko videoiden sisällössä jotain erityisen vaikeaa? Entä mielenkiintoista? Jotain josta haluaisit oppia lisää?

Linkkejä viikon aiheisiin:

Week05 - Glossary

Viikko05 - Sanasto

Palauta viikkotehtävät

Questions to be submitted this week

Kurssiaihe 6

Itseopiskelu

Viikon aiheet: STL:n algoritmit, lambda-funktiot

Opetusvideot ja niihin liittyvät kalvot:

STL:n algoritmit

Oletetaan, että on olemassa jokin STL-säiliö muuttujassa \(A\) ja halutaan syöttää \(A\) STL-algoritmiin \(X\). Mitä parametria (tai parametreja) pitäisi syöttää algoritmiin \(X\) osoittamaan, että halutaan algoritmin \(X\) käyttävän koko säiliötä \(A\)?
Mistä syistä on parempi käyttää STL:n algoritmeja jonkin tehtävän laskemiseen sen sijaan, että kirjoittaisit omia algoritmeja tehtävän laskemiseksi? (Voi olla enemmän kuin 1 oikea syy.)

Esimerkkejä STL:n algoritmien käytöstä

Oletetaan, että alku ja loppu ovat kaksi iteraattoria, jotka liittyvät vektoriin v. Oletetaan, että iteraattorin alku oikealla puolella oleva paikka on \(i\) ja iteraattorin loppu oikealla puolella oleva paikka on \(j\). Mikä on erotuksen loppu - alku merkitys?
Mikä seuraavista vaihtoehdoista STL:n algoritmeista on totta?

Lambda-funktiot

Oletetaan, että on olemassa vektori std::vector<int> v{6, 3, 4, 9, 2, 7, 1, 11}; C++:ssa. Mikä seuraavista tuottaa osoittimen *it, jonka arvo on 2?
Mitkä seuraavista väitteistä lambda-funktioista ovat totta. (Voi olla enemmän kuin 1 väite, joka on tosi.)
Oletetaan, että on olemassa vektori std::vector<int> v{-19, 21, -4, 6}; C++:ssa. Mikä on osoittimen *it arvo, seuraava rivi lasketaan?:: auto it = std::find_if(begin(v), end(v), [](int i){ return (i%2 != 0 && i >0); });

Lambda-funktiot ja muuttujien kaappaaminen

Kun sanomme, että lambda-funktio kaappaa muuttujan, tarkoitamme,
Oletetaan, että C++:ssa on olemassa vektori v, jonka alkiot ovat kokonaislukuja, ja muuttuja d, joka on nollasta poikkeava kokonaisluku. Mikä on muuttujan a arvo, kun seuraava rivi lasketaan?:: int a = std::count_if(v.begin(), v.end(), [d](int i){return (i % d != 0 && i*d > 0 );});

STL:n algoritmien ja säiliöiden mukauttaminen

Mitkä seuraavista STL-algoritmien mukauttamista koskevista väitteistä on totta? (Useampi kuin yksi väite voi olla totta.)
STL-kirjasto sisältää algoritmit count_if, find_if ja remove_if. Mikä seuraavista ominaisuuksista on kaikilla näillä algoritmeilla?
Muotoile kurssin kannalta keskeinen kysymys, johon tämän viikon videot antavat vastauksen.
Minkä videon aiheesta pitäisi erityisesti keskustella keskustelutilaisuudessa?
Oliko videoiden sisällössä jotain erityisen vaikeaa? Entä mielenkiintoista? Jotain josta haluaisit oppia lisää?

Lisäinformaatiota aiheesta:

Viikko06 - Sanasto

Kurssiaiheiden palautettavat kotitehtävät

Tällä viikolla palautettavat tehtävät

Palautusta lähetetään...