Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

C++ Standardna biblioteka od nule



Šta ovu knjigu čini različitom?

Ova knjiga razlikuje se od bilo čega što je ikada o ovoj temi napisano. Evo u čemu je razlika: Sve ostale knjige o programiranju počinju da vas uče jednostavnim veštinama koje prerastaju u složenije, dodajući veštinu na veštinu kako napredujete. Kada savladate sve veštine, knjige vam onda daje primer šta možete da napravite: probni program.

Ova knjiga ne počinje sa listom klasa i funkcija, ona počinje sa projektom. Počinjete sa analizom i dizajniranjem projekta i onda implementiranjem tog dizajna. Osobine standardne biblioteke su predstavljane u kontekstu implementacije; prvo da razumete ono što pokušavate da postignete, a zatim da naučite veštine. Biblioteka sadrži sve što je potrebno da biste obavili posao.

Učenje standardne biblioteke ne mora biti teško

Mnogi ljudi smatraju C + + Standardnu biblioteku zastrašujućom. Verujem da je to zato što se većina knjiga i kurseva fokusiraju na setu karakteristika koje se mogu naći u biblioteci, a ne o problemima koje ove funkcije pomažu da rešite. C + + Standardna biblioteka je toliko velika da pokušati naučiti je na ovaj način to je kao da pokušavate da naučite francuski memorisanjem francuskog rečnika.

Postoje dva načina da naučite da govorite neki strani jezik. Jedan od načina je da se pamte na desetine fraza i veština menjanja glagola. Drugi je da se ode u zemlju i ima interakcija sa izvornim govornicima. Svako uči na svoj način, ali mogu vam reći iz mog iskustva da nedelju dana u Francuskoj vredi kao dve godine u učionici.

Ako bih hteo da vas naučim C + + standardnoj biblioteci i da to radimo zajedno, ne bih vam davao knjigu uopšte. Ja bih sedeo sa vama i zajedno bismo pisali program. Usput, ja bih vas učio svemu onome što treba da znate, povremeno dajući vam kratke delove da čitate da bi potvrdili vaše razumevanje.

Baš tako ova knjiga i radi: mi ćemo sesti zajedno i napisati program, a usput ću vas naučiti svemu onome što treba da znate. Od prve stranice vi se nećete fokusirati na listi karakteristika već na razumevanju problema koji pokušavate da rešite, projektovanju rešenja.

 

Note Budući da ova knjiga može biti prva knjiga koju čitate nakon učenja C + + ja sam dodao veliki broj tumačenja koncepta C + +. Ako ste stari poznavalac C + + programiranja, jednostavno preskočite ova tumačenja.

Učenje kako napraviti izbor između bibliotečkih konstrukcija

Jedna od mana drugih nastavnih pristupa je bombardovanje sa nizom funkcija sa malo uputstva o tome kako da izaberati pravu. Zato što se radi kroz pravi program, mogu da objasnim alternativne načine rešavanja problema i opišem zašto smo izabrali baš to rešenje. Vraćajući se analogiji učenja stranog jezika, naučićete ne samo legalan način korišćenja bibliotečkih konstrukcija, već i idiomatsku upotrebu istih.

Idiom je uobičajen način korišćenja programskih kontrukcija ili funkcija. Razumevanje značenja idiomatske konstrukcije je razumevanje celine, bez potrebe da se analiziraju pojedinačni delovi.

Korišćenje idioma smanjuje količinu razmišljanja šta treba da uradite i čini vaš kod lakšim za održavanje od strane drugih ljudi koji razumeju idiom.

Zašto treba da naučim C + + standardnu biblioteku?

Zvanični standard za C + + jezik je 776 stranica dugačak dokument (ISO / IEC 14882 1998). Oko polovine tog dokumenta posvećeno je biblioteci funkcija i klasa koje se pružaju sa standardnim-usaglašenih compiler-ima. Ako koristite C + + bez razumevanja standardne biblioteke, znate samo polovinu priče.

 

Tip Ako ne znate kako da programirate u C + +, ostavite ovu knjigu odmah. Trčite (ne hodati) u prodavnicu gde ste kupili ovu knjigu i kupiti Jesse Liberty's C + + Od nule (ISBN: 0-7897-2079-5). Kada završite sa čitanjem C + + od nule, možete nastaviti da čitate ovu knjigu, tamo gde ste stali.

Veliki deo programiranja čine sveti zadaci kao što su upravljanje kolekcijama objekata, manipulisanje tekstualnim stringovima, traženje, sortiranje i obavljanje formatiranim ulazima i izlazima. Iako konceptualno zvuči jednostavno, mnogi od ovih zadataka su dosadani, a neke je teško i uraditi na pravi način. Da li stvarno želite da sprovedete neku vrstu algoritma samostalno? Kakve su šanse za uvođenjem suptilnog upita koji samo pokazuje kada, recimo, sortiranje nizova koji sadrže tri elementa sa istim vrednostima?

Pravilna upotreba biblioteke povećava prenosivost vaših programa na različitim compiler-ima i operativnim sistemima. Upotreba standardnih klasa biblioteka za razmenu podataka postaje sve češći i sve više i više nezavisnih biblioteka koriste standardne klase u njihovim interfejsima.

Učeći o standardnoj biblioteci, možete izbeći izmišljanje tople vode. Funkcije u standardnoj biblioteci postoje da bi vaši programi bili lakše napisani i bili robusniji. Ljudi koji budu održavali kod biće vam zahvalni za upotrebu jasno razumljivog koda umesto da ste kreirali svoj kod. (Ok, ne mogu stvarno da vam se zahvale, ali oni će biti zahvalni iznutra, u najmanju ruku oni vas neće proklinjati).

Šta je C + + standardna biblioteka?

C + + Standardnu biblioteku čine zapravo dve stvari. U klasičnom smislu, to je skup tipova i funkcija koje dolaze spremni za korišćenje sa standardnim usaglašenim compiler-om.

Biblioteka je skup komponenti za višekratnu upotrebu (klase, funkcije, makroi, i tako dalje) koje treba da pomognu programerima da obavi zadatke. Biblioteka može biti za posebnu namenu (na primer, Internet programiranje) ili opštu namenu (na primer, sortiranje).

Standardna biblioteka je biblioteka čiji je sadržaj i ponašanje opisano u dokumentu izdatom od strane organa za standarde (na primer, Međunarodna organizacija za standarde, ISO). Osim ako nije drugačije navedeno, "standardna biblioteka" ovde se koristi kao lakši način da se kaže "C + + standardna biblioteka" - to jest, biblioteka opisana u ISO C + + standardu.

Standardima usaglašen compiler je compiler i biblioteka koja pravilno implementira ponašanje opisano u ISO standardu za C + + jezik i biblioteku.

Ali, C + + Standardna biblioteka je takođe proširiv okvir za stvaranje dodatnih komponenti za biblioteku. Veći deo vašeg rada sa standardnom bibliotekom neće uključivati stvaranje novih komponenti. Ali za one koji su u 10 posto slučajeva u kojima su potrebne nove komponente, mogućnosti biblioteke dokazuju da je ona izvaredna. Sposobnost stvaranja novih komponenti stvara razliku izmedju iskusnih korisnika biblioteke i početnika. Sa ovom knjigom, nadam se da ću vam pomoći da predjete značajan deo puta ka veštim korisnicima biblioteke.

Delovi standardne biblioteke

Deset manjih biblioteke zajedno čine C + + Standardnu biblioteku. A One su:
  1. Jezička podrška biblioteci, koja sadrži vrste i funkcije direktno povezane sa jezikom i compiler-om. Na primer, postoje konstante koje definišu opseg i preciznost plutajućih tačaka brojeva i funkcija za izlazak iz programa.
  2. Dijagnostička biblioteka, koji sadrži klase za izuzimanje i drugih objekata za otkrivanje i prijavljivanje grešaka.
  3. Generalna pomoćna biblioteka, koja sadrži korisne objekte koje nije lako svrstati u jednu od drugih biblioteka.
  4. String biblioteka, za manipulaciju tekstualnih nizova.
  5. Lokalizacija biblioteka, za rukovanje međunarodnim karakter setovima i kulturološki specifično oblikovanje stvari kao što su vreme, datum i valute.
  6. Kontejneri biblioteka, koja pruža generičke kontejnere za prikupljanje objektata.
  7. Iterators biblioteka, za prebacivanje stavki u kolekciju.
  8. Algoritam biblioteka, koja implementira mnoge najčešće korišćene algoritme za obradu podataka.
  9. Brojevi biblioteka, koja pruža kompleksne brojeve, specijalne nizove numeričkih tipova i numeričke algoritme.
  10. Ulaz / Izlaz biblioteka, za obavljanje prenosivih formatiranih i neformatiranih ulaza i izlaza na fajlovima i drugim uređajima.
Koji delovi su zaista korisni?

Svih deset biblioteka nisu podjednako korisne. Neke biblioteke ćete koristiti svaki dan, dok neke druge možda nikada nećete koristiti. Ova knjiga se fokusira na pet biblioteka koje ja smatram najkorisnijim u svakodnevnoj upotrebi: stringova, kontejnera, Iterators, algoritam i ulaz / izlaz.

Nasuprot tome, nije sve što može biti korisno uključeno u standardnoj biblioteci. ISO (Međunarodna organizacija za standarde) odbor odgovoran za stvaranje medjunarodnog C++ Standardnog jezika pregledali su stotine predloga za funkcije koje bi se mogle dodati standardu. Oni su pokušali da uključuje samo one funkcije koje najviše odgovaraju generalnoj upotrebi i gde je predlog bio dobro konstruisan.

U retrospektivi, mnoge korisne karakteristike su uglavnom izostavljene, dok su ostale generalno manje korisne opcije uključene. Pošto idemo zajedno, ja ću ukazati na neke od većih propusta. Neću vam dosadjivati sa svim onim nejasnim funkcijama koje se retko koriste. U biranju i izboru, ja sam u smislu drugog pogađanja ISO članova odbora koji su robovali standardima toliko dugo. Ovo je moj prerogativ kao autor sa 20/20 neopreznosti i nema izvinjenja.

Šta je sa onim osobinama biblioteka koje ja obično koristim u C?

Ako ste programirali u C pre učenja C + +, verovatno ste upoznati sa velikim brojem funkcija biblioteke koje su deo C standardne biblioteke. Ove funkcije, kao što su printf i strcpi i atoi, i tako dalje - i dalje su vam dostupne u C + + Standardnoj biblioteci i vi ćete istražiti veliki broj njih u ovoj knjizi. Neki delovi C biblioteke, kao što su ulazno / izlazne funkcije se retko koriste u C + +, jer su vam dostupne više sofisticirane komponente u C + + biblioteci. Ostali delovi C biblioteke i dalje će biti dragoceni za pisanje C + + programa.

C Standardna Biblioteka doživela je nekoliko promena od kada je postala deo C + + Standardne biblioteke. Za početak, zaglavlje datoteka ima promenjena imena. Na primer, stdio.h je preimenovan u cstdio. Isto pravilo je primenjeno i za ostala zaglavlja: Uklonite .h i stavio malim slovom c ispred.

Iskoristivši sposobnost preopterećenja imena funkcija u C + +, neke funkcije su promenjene kako bi bolje iskoristili const. Na primer, C funkcija

char* strchr(const char* s, char c);

je zamenjena u C + + sa sledeće dve funkcije:

const char* strchr(const char* s, char c);
char* strchr( char* s, char c);

Prvi oblik searches karaktere u okviru niza const karaktera i dodeljuje const pokazivač prvome. Drugi oblik radi za non-const niz i vraća pokazivač na non-const. Ovo zatvara const-sigurnosnu rupu u C verziju funkcije koja vraća non-const pokazivač u niz potencijalno const.

Opterećenost takođe obezbeđuje više verzija matematičkih funkcija sa pokretnim zarezom za različite veličine tipova brojeva sa pokretnim zarezom. Na primer, C funkcija

double sin(double);

je promenjena u C + + sa

float sin(float);
double sin(double);

i

long double sin(long double);

Konačno, sve nasleđene komponente iz C biblioteke, osim makroa su stavljene u std imenskom prostoru. (Makroi iz C biblioteke su još i dalje dostupni, ali, pošto makroi ne obezbedjuju pravila određivanja okvira, oni ne mogu biti dodeljeni imenskom prostoru.) Imenski prostor std biće razmatran u narednom poglavlju.

Da li je standardna biblioteka isto što i STL?

STL je skraćenica za standardni šablon biblioteke. Termin se odnosi na skup interfejsa i komponenti razvijenih od strane Aleksandra Stepanov-a i ostalih koji rade u istraživačkim laboratorijama AT & T Bell-a i Hewlett-Packard-a. Cilj Stepanova bio je da razvije potencijal generičkog programiranja da stvori standardni set komponenti za višenamensku upotrebu. Danas, STL obuhvata kontejnere, Iterators, algoritme i deo od generalne pomoćne biblioteke iz C + + standardne biblioteke. Drugim rečima, STL je samo deo standardne biblioteke njen veoma važan deo. Veći deo ove knjige posvećen je razumevanje i korišćenju STL komponenti.

Interfejs je bilo koji formalni opis kako programer ili korisnik dobija pristup mogućnostima funkcije, klase, makroa, ili bilo koje druge komponente sistema. Interfejs je apstraktan koncept programiranja, nije specifična reč C + +.

Interfejs opisuje skup javnih funkcija, vrste i promenljivih u klasi.

Funkcija interfejs opisuje skup vrste argumenta i vraća tip za funkcije (tj. njen prototip).

Dizajnerski ciljevi STL

Kada su glavne ideje STL predstavljene odboru za standardizaciju C + + krajem 1993, oni su to sa oduševljenjem primili. Dakle, retko je da predlog zadovolji istovremeno toliko mnogo postavljenih ciljeva. STL je uspešno ispunio sledeće ciljeve dizajna: Ako ste čuli mnogo o STL i pitali se zbog čega je bilo toliko uzbudjenja, sada znate. Sve što mogu da vam obećam je da će sigurno izazvati uzbuđenje.

Koji alati su mi potrebni?

Teoretski, mogli ste i da pročitate ovu knjigu, bez upotrebe računara. Međutim, da bi efekat bio najveći, vi ćete želeti da sastavite neki kod ili sve od kodova za vežbu u knjizi, možda ih i izmenite da biste eksperimentisali sa funkcijama biblioteke. Takođe vam predlažem da pokušate da rešite sve vežbe u poglavlju na web sajtu za podršku, http://www.halpernwightsoftware.com/stdlib-scratch/support.html.

Da biste napravili i pokrenuli programe u ovoj knjizi, biće vam potreban tekst editor ili Integrated Development Environment (IDE), moderan C + + compiler i naravno sama standardna biblioteka.



Published (Last edited): 22-08-2012 , source: http://halpernwightsoftware.com/stdlib-scratch/excerpts/intro.html