Kurssiviikko 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

Viikkoharjoitusten palautettavat kotitehtävät

Tällä viikolla palautettavat tehtävät