C++/Filozofia STL: Różnice pomiędzy wersjami

Z Wikibooks, biblioteki wolnych podręczników.
< C++
Usunięta treść Dodana treść
new i delete
Lethern (dyskusja | edycje)
m Wycofano edycje użytkownika 178.42.72.21 (dyskusja). Autor przywróconej wersji to Lethern.
Linia 16: Linia 16:
// przedrostek 'c' oznacza bibliotekę języka C
// przedrostek 'c' oznacza bibliotekę języka C
// warto takich bibliotek nie używać
// C++ ma ich nowsze odpowiedniki (mają inną składnię)
#include <limits> //zamiast #include <limits.h>
#include <string> //zamiast #include <string.h>
#include <iostream> //zamiast #include <stdio.h>
#include <fstream> //dopełnienie iostream o obsługę plików
#include <sstream> //nowsze wersje funkcji sprintf i sscanf w formie klasy stringstream
//jeśli chodzi o funkcje malloc i free z cstdlib to używamy operatorów new i delete
//zamiast:
int* wskaznik = (int*)malloc(sizeof *wskaznik * 10);
//używamy:
int *wskaznik = new int[10];
//zamiast:
free(wskaznik);
//używamy:
delete wskaznik;
</source>
</source>
Teraz kwestia dotycząca przestrzeni nazw. Zawartość biblioteki standardowej została "włożona" do przestrzeni nazw po to, aby używane tam nazwy, np. metod klas, nie zastrzegały sobie wyłączności na daną nazwę w obrębie całego programu. Przez to, albo dzięki temu, możemy powiadomić kompilator o tym jakiej części chcemy używać. Składnia została przedstawiona poniżej:
Teraz kwestia dotycząca przestrzeni nazw. Zawartość biblioteki standardowej została "włożona" do przestrzeni nazw po to, aby używane tam nazwy, np. metod klas, nie zastrzegały sobie wyłączności na daną nazwę w obrębie całego programu. Przez to, albo dzięki temu, możemy powiadomić kompilator o tym jakiej części chcemy używać. Składnia została przedstawiona poniżej:
Linia 49: Linia 33:


<noinclude>{{Nawigacja|C++|
<noinclude>{{Nawigacja|C++|
[[C++/Wskaźniki do elementów składowych|Wskaźniki do elementów składowych]]|
[[C++:Wskaźniki do elementów składowych|Wskaźniki do elementów składowych]]|
[[C++/String|String]]|
[[C++:String|String]]|
}}</noinclude>
}}</noinclude>

Wersja z 13:55, 15 paź 2011

Biblioteka standardowa języka C++ jest jego częścią i należy do standardu. Uzupełnia sam język logicznymi strukturami czyniąc go bardziej użytecznym. STL (ang. Standard Template Library) jest chyba pierwszą rzeczą jaką trzeba sie nauczyć zaraz po samej nauce języka C++. STL jest pewną częścią biblioteki standardowej należącą do języka C++, a nie całą. Dlaczego warto używać STL? Żeby nie odkrywać koła na nowo mówiąc w skrócie, tworzyć kod przenośny między platformami i wiele innych przyczyn wynikających ze stopnia zaawansowania twojego programowania. W tym artykule postaram się opisać bibliotekę standardową wzorców dla początkujących i najwięcej uwagi poświęcić tym (z mojego punktu widzenia) częściom najbardziej użytecznym i wykorzystywanym do amatorskiego i nie tylko programowania. Zanim zaczniemy poznawać poszczególne kategorie STL musimy poznać tak zwany generalny konspekt przygotowania jej do użycia. Najważniejszymi i niezbędnymi są: dołączanie odpowiednich plików nagłówkowych i korzystanie z przestrzeni nazw. Jeżeli chodzi o pliki nagłówkowe to używamy następującej składni:

#include <iostream>
#include <string>
#include <vector>
 
// zamiast niepoprawnych:
#include <iostream.h>
#include <string.h>
#include <vector.h>
 
// aby użyć starej biblioteki z języka C, zapisując to w stylu C++, robimy to tak:
#include <cstdlib>   // zamiast <stdlib.h>
#include <cstring>   // zamiast <string.h>
 
// przedrostek 'c' oznacza bibliotekę języka C

Teraz kwestia dotycząca przestrzeni nazw. Zawartość biblioteki standardowej została "włożona" do przestrzeni nazw po to, aby używane tam nazwy, np. metod klas, nie zastrzegały sobie wyłączności na daną nazwę w obrębie całego programu. Przez to, albo dzięki temu, możemy powiadomić kompilator o tym jakiej części chcemy używać. Składnia została przedstawiona poniżej:

// załączamy całą przestrzeń nazw:
using namespace std;
 
// lub: załączmy tylko wybrane elementy cout i endl:
using std::cout;
using std::endl;

Oczywiście możemy nie używać dyrektywy using. Wówczas przed każdym użyciem elementu z biblioteki standardowej, np. obiektu cout, dopisujemy z jakiej przestrzeni nazw pochodzi dany element:

std::cout << "Nowa linia i wymuszenie przepływu z bufora" << std::endl;