P7 Flashcards

1
Q

Sta kompajler radi kada vidi def fje

A

Pokusava prevesti u masinac i qko je kod sintaksicki validan dobijamo prevod a kompajler zapamti da postoji blok pod tim umenom koji se moze pozvati u kodu
On ocekuje poziv

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Da li referenca ima svoj komad memorije

A

Ne ona nema svij komad memorije vec koristi memorijski prostor druge var ond pokazuje na njega

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Sta se desi kada pzoovemo fju

A

Izrazi na mjestu arg se izvrse (nespecifucqn redoslijed), povratne vrijednosti se implicitno konvertuju u vr tipa parametara i prosljedjuju za njihovu inicijalizaciju

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Sta je izrazr uz return

A

Izraz koji se izvrsi i vraca vrijednost bilo kog tipa nakon cega se implic konvert u povr tip fje

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Vise reurn stejtmenta?

A

Moze ali moraju biti isti tip

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Auto kod parametara

A

Ne moze

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Argum po vr

A

Vrijednksti argumenata se kopiraju i dodjeljuju parametrima fje

Imamo po 2 var sa istim vrijednostima

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Void

A

Ne vraca nista i kompajler ne ocekuje return kao kod istalih fja

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Moze li se cout u vodiu

A

Moze jer je to popratni sadrzaj *ispis na ekran

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Zasto se koriste reference kod fja

A

Ako koristimo tipove koji su stringivi ili vektoru i ugl kontejneri i ako oni imaju veliki broj elemenata, ako ih proslijedimo po vrijednosti sve to se kopira sto zauzima puno memorije i jako je sporo obzirom da se kasnije ta memorija mora i dealocirati

Jako je skupo i ima slabe performanse

Da bi se to izbjeglo program koristi minimalno memorije upotrebom reference na mjestu parametara umjesto prosljedjivanja po vrijednosti (jos bolje je ako to moze biti const referenca jer poboljsava performansu)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Ako proslijedimo po const ref sta se desava u fji

A

Sve operacije se vrse na prosljedjenom objektu bez kopiranja istog ali fja ni na kakav nacin ne mijenja stanje prosljedjenog ibjekta jer moze samo da cita iz istog

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Izbor prosljedjivanja po vrijednosti ili po referenci

A
  1. Const &
  2. & ili vrijednost
  3. Ako se original ne mijenja i koristi samo za citanje
    2.1. Po & samo ako je potrebno da funkcija mijenja objekat prosljedjen kao argumjebt uku ako se vraca vuse id 1 vrijednosti
    2.2. Ako ne zelimo da se mijenja objekat, dodatno ako su u pitanju primitivni tipovi nema puno razlike izmedju prosljedjivanja na oba nacina
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Kada ne mozemo proslijediti arg kao kontejner po const &

A

Ako jma sort pozvan jer on mijenja stanje kontejnera
Nema errora pri kompajliranju ali nastaje jedan tokom runtimea

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Kako je moguce kao arg proslijediti nacin na koji se vrsi unos u neki kontejner npr

A

Ako ukljucimo incc<fstream> i kao parametar navecedmo const std::istream&
Tada mozemo birati na koji nacin prosljedjujemo podatke, da li preko cin ili unosimo datiteku nebirntno</fstream>

PARAMETAR MORA BITI PROSLIJEDJEN PO CONST REF JER SE ISTREAM NE MOZE KOPIRATI

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Razlika kada u mainu imamo return 0; i return neka druga vrijednkst

A

return 0; sve ok
return != 0 program terminiran prijevremeno nije mogao ispisati rezultat

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

For range statement

A

for (tip e : k){
//
}

K mora biti kontejner
Za svaki el iz kontejnera aplicirat stejtmente unutar bloka (e je lokalna var i inicijalizirana vrijednoscu elementa na poziciji broja iteracije koja se desava)
Samim time blok se izvrsava onoliko puta koliko ima elemenata u kontejnery

17
Q

Sta su fje viseg reda

A

Koja umjesto parametra uzima drugu fju ili kao prozivedeni rezultat daje drugu fju

18
Q

Ugnjezdena fja

A

NE, definicija fje SAMMO u ns

19
Q

Sta je lambda izraz

A

Objekat koji se moze pozvati malim zagradama poput fje ali se moze i proslijediti u fju kao argument

20
Q

Forma lambda izraza i gdje se moze definirati

A

{ tijelo }

Sve to predstavlja 1 stejtment koji se moze definiratii i u mainu i izvan maina zavisi hocemo li da bude lokalnog ili globalnog tipa

21
Q

Moze li lambda u var

A

Objekat lambda izraza se moze smjestiti u var (obaveznk tip auto) jer ne znamo koji tip prozivodi lambda izraz to samo zna kompajler

Nijedan lambda izraz ne proizvodi isti tip

Moze se implicitno konvertovati u std::function sto se koristi za prosljedjivanje kao arg za inicijalizaciju parametara

22
Q

Da li su lokalne var definirane prije lambde vidljive unutar nje

A

NE zbig cega postoji []
Ukoliko je klauzula prazna nista definirano prije izraza nije vidljivo u njemu, te ako hicemo da bude vidljivo to navodimo u klauzuli

23
Q

Sta sve moze biti u []

A

Mozemo proslijediti samo var
[ime_var] ovako prosljedjena var je prosljedjena po vr kao konstantsa tog tipa koja ima istu vrijednost sto znaci da se dalje u izrazu ne moze mijenjati i u memoriji postoje dvije te var
ako iza liste parametara dodamo keyword mutable u tom slucaju var prosljedjene po vr nisu konstante i mogu se mijenjati unutar izraza ali idalje u memoriji postoje 2 razlocite mem lokacije

[&ime_var] var se prosljedjuje u izraz kao referenca i moguce su promjene nad istom u tom slucaju se mijenja i vanjska var

[&] sve var prethodno definisane se prosljedjuju kao reference i vrijede pravila

[=] sve var prethodno definisane se prosljedjuju po vr i vrijede pravila (vrijedi pravilo i za muatble jer su inace sve const)

[&, imevar] ili [=, &imevar] moguce dio var prenijeti po vr ili ref eksplicitnim imenovanjem

24
Q

Treci argiment sorta

A

Uzima 2 parametra po konstantnoj referenci i vraca boolean na osnovu zadatoh uslova