A template osztályok (sablonok) használatát el tudná vki mondani, hogy hogyan használjuk meg mire valók?
A map az a tömb adatszerkezet általánosítása azaz asszociatív tömb, nem csak egész számokkal indexelheted a tömböt ha t egy map<string,int> asszociatív tömb akkor értelmes művelet pl t["alma"]=t["alma"]+1. Ilyen tömböt nehéz lenne bejárni egyáltalán milyen tömb indexei vannak?
Erre van kitalálva az iterátor amivel be lehet járni az ilyen tömböt.
Matematikailag tekintve egy leképezés adattípus, mely véges sok azonos típusú elemhez hozzárendel egy ugyan olyan vagy más típusú elemet.
-------
A set meg a halmaz adattípus, oda lehet bedobálni azonos típusú elemeket meg lehet nézni hogy eleme e valami, törölni lehet belőle stb.
-------
Akkor kell használni ha szükséges, feladattól és kreativitástól függően.
Pl. Egy könyv szövegét beolvasva és szavanként berakva egy map-ba könnyedén meg lehet számolni hogy melyik szó hányszor szerepel.
Ha csak az érdekel hogy szerepelt e az a szó vagy nem arra jó set. Ha csak sima tömbbe pakolgatod a szavakat és abban keresel és N a szavak száma akkor az átlagos keresési műveltek száma N/2, legrosszabb eset N. Ezzel szemben a set log(N)-el arányos legrosszabb esetben is, úgyszintén a map is. Azért az elég jelentős futási idő különbség egy nagy adathalmazra nézve hogy a méretének logaritmusával arányos idő alatt végez garantáltan vagy pedig végig kell nézni az egész adathalmazt vagy egy jelentős részét. A keresési beszúrási és törlési idő is logaritmikus garantáltan.
Köszönöm a segítséget !
Esetleg el tudnád még mondani, hogy a template osztályok azok mire jók? Tehát h sablonokat miket/ hogy használunk?
"A Set az azonos szavakat mondjuk egy halmazként kezeli?"
???
Ha a set szavakat tárol és új szót próbálsz berakni azt akkor rakja bele ha még nem tartalmaz olyan szót halmazelemként.
@19:15
Alapvetően jól gondolod de van egy kis fogalom zavar:
"És mikor példányosítjuk az osztályt, akkor megadhatjuk, hogy milyen típusú legyen az osztályunk és csak ennyit kell csinálni (...)"
Az osztály maga egy típus. sablon<osztály> -al definiáltál egy osztályt, a template osztály-ra helyes azt mondani hogy paraméteres típus.
Az osztály példányosítása megint más,annak az osztálynak egy példánya egy olyan típusú változó.
Technikai szemmel nézve a template osztály nem helyes kifejezés, azok osztály template-ek, osztály sablonok. Önmagukban nem típusok (ellentétben pl egy Java vagy egy ADA generic-kel). Megadják a fordítónak, hogy hogy kell típust készíteni.
A template célja elsősorban a kódismétlés elkerülése. Vannak osztályok, algoritmusok amik egyetlen dologtól függnek: a típustól amivel/amin dolgoznak, ezért nem fogod leírni többször ugyanazt a kódot, hanem ezt rábízod a fordítóra.
A templateknek van sok egyéb célja is, ez a metaprogramozás. Ebbe bele se megyek, mindenesetre akkor jó, ha nem is veszed észre, hogy működik (pl a char_traits ilyen, többnyire nincs rá szükséged, hogy tudd).
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!