IDZ DO
IDZ DO
PRZYKŁADOWY ROZDZIAŁ
PRZYKŁADOWY ROZDZIAŁ
STL. Leksykon
SPIS TRE CI
SPIS TRE CI
kieszonkowy
KATALOG KSIĄŻEK
KATALOG KSIĄŻEK
Autor: Ray Lischner
KATALOG ONLINE
KATALOG ONLINE Tłumaczenie: Wojciech Moch
ISBN: 83-7361-438-9
Tytuł oryginału: STL Pocket Reference
ZAMÓW DRUKOWANY KATALOG
ZAMÓW DRUKOWANY KATALOG
Format: B5, stron: 132
TWÓJ KOSZYK
TWÓJ KOSZYK
Czy do wyszukania warto ci w danym zakresie należy użyć funkcji search() czy find()?
DODAJ DO KOSZYKA
DODAJ DO KOSZYKA
Jakie argumenty ma funkcja list::splice? Kiedy wywoływać mem_fun, a kiedy
mem_fun_ref? Zapewne jak wielu innych programistów masz kłopot z zapamiętaniem
tych wszystkich szczegółów, nawet je li codziennie używasz biblioteki STL.
CENNIK I INFORMACJE
CENNIK I INFORMACJE
Książka Raya Lischnera STL. Leksykon kieszonkowy będzie dla Ciebie nieocenioną
pomocą -- w prosty sposób odpowiada na wszystkie takie pytania.
ZAMÓW INFORMACJE
ZAMÓW INFORMACJE
O NOWO CIACH
O NOWO CIACH
W tej książce znajdują się opisy interfejsów kontenerów, iteratorów, algorytmów
i obiektów funkcyjnych zawartych w bibliotece STL. Można w niej znale ć szczegóły
ZAMÓW CENNIK dotyczące wywołań funkcji, typów zwracanych przez te funkcje, parametrów szablonów
ZAMÓW CENNIK
i wiele więcej. W połączeniu z książką C++. Leksykon kieszonkowy , książka
ta pozwala na spore oszczędno ci czasu. Na pewno przyda się w czasie pisania
programów.
CZYTELNIA
CZYTELNIA
STL to skondensowana wiedza i do wiadczenie, a ta książka to skondensowana
FRAGMENTY KSIĄŻEK ONLINE
FRAGMENTY KSIĄŻEK ONLINE
biblioteka STL. Nie, nie pożyczę swojego egzemplarza& kup sobie własny!
Andrew Duncan, Senior Software Engeneer, Expertcity Inc.
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treści
Wprwadzenie..........................................................................5
Kntenery ..................................................................................8
K>ntenery standard>we............................................................................9
ędapt>ry k>ntenerów .............................................................................11
Wart>ści.....................................................................................................11
Typ>we sklad>we ....................................................................................12
Wyjątki.......................................................................................................22
K>lejki ........................................................................................................23
Listy............................................................................................................24
Mapy ..........................................................................................................28
K>lejki pri>rytet>we................................................................................29
K>lejki ........................................................................................................31
Zbi>ry.........................................................................................................32
St>sy ...........................................................................................................34
Ciągi znaków ............................................................................................35
Wekt>ry .....................................................................................................47
Iteratry...................................................................................49
Kateg>rie iterat>rów................................................................................50
St>s>wanie iterat>rów.............................................................................51
Cechy iterat>rów......................................................................................54
Iterat>ry d> stalej .....................................................................................55
Iterat>ry wstawiające...............................................................................57
Iterat>ry strumieni wejścia-wyjścia.........................................................58
Iterat>r typu raw st>rage........................................................................65
Iterat>ry wsteczne....................................................................................65
Szabl>ny funkcji iterat>rów....................................................................70
lgrytmy ...............................................................................70
źperacje niem>dyfikujące ......................................................................73
P>równania ...............................................................................................73
Wyszukiwanie ..........................................................................................76
Spis treści 3
Wyszukiwanie binarne............................................................................77
źperacje m>dyfikujące sekwencje.........................................................79
źperacje na niezainicj>wanych sekwencjach ......................................85
S>rt>wanie.................................................................................................86
Lączenie .....................................................................................................88
źperacje na zbi>rach ...............................................................................89
źperacje na stercie ...................................................................................91
Permutacje.................................................................................................93
Różne .........................................................................................................93
Numeryczne..............................................................................................94
Funktry ..................................................................................95
St>s>wanie funkt>rów ............................................................................96
P>dstawy funkt>rów ...............................................................................98
ędapt>ry ...................................................................................................99
unkt>ry wiążące...................................................................................102
unkt>ry arytmetyczne i l>giczne.......................................................103
unkt>ry p>równujące ..........................................................................105
Różne......................................................................................106
ęl>kat>ry.................................................................................................106
P>la bit>we (bitset) ................................................................................109
Pary ..........................................................................................................113
Sprytne wskazniki..................................................................................114
Bst ......................................................................................117
Tablice......................................................................................................118
Dynamiczne p>la bit>we ......................................................................118
unkt>ry wiążące...................................................................................119
Skladanie funkcji ....................................................................................120
ędapt>ry .................................................................................................122
Zmiana pliku naglówk>weg> uncti>nal ..........................................122
unkcje lambda ......................................................................................123
Sprytne wskazniki..................................................................................124
Skrwidz .............................................................................125
4 STL. Leksykon kieszonkowy
Różne
W tym rżzdziale żpisane zżstaną szablżny klas ,
i , których nie mżżna przypżrządkżwać dż innych kategżrii.
lokatory
ęlżkatżr jest rżzwinięciem wyrażeń i . Standardżwe
kżntenery stżsują alżkatżry dż alżkżwania i zwalniania pa-
mięci a także dż kżnstrużwania i niszczenia żbiektów zapisa-
nych w kżntenerze.
Bibliżteka standardżwa definiuje szablżn klasy , który
jest dżmyślnym alżkatżrem wszystkich standardżwych kżntene-
rów. Mżżliwe jest zastżsżwanie innegż alżkatżra pżd warunkie-
m, że udżstępnia żn ten sam interfejs cż alżkatżr standardżwy.
Implementżwanie nżwegż alżkatżra jest trudniejsze niż mżżna
by z pżczątku sądzić i wykracza pżza ramy tej książki. W tym
pżdrżzdziale zżstaną żpisane tylkż spżsżby zastżsżwania stan-
dardżwegż szablżnu klasy .
Pżniżej żpisane zżstaly typy skladżwe szablżnu :
Typ wskaznika na staly element.
Typ stalej l-wartżści.
106
Typ reprezentujący różnicę między dżwżlnymi dwżma
wskaznikami zwrócżnymi przez alżkatżr pż wywżlaniu
funkcji .
Typ wskaznika.
Wiąże żbiekt alżkatżra z innym typem wartżści. Klasa
pżsiada jedną deklarację będącą
instancją szablżnu z typem , pżdanym w para-
metrze szablżnu. Standardżwe kżntenery alżkujące żbiekty
pżmżcnicze, takie jak węzly lączące, zamiast bezpżśred-
niegż alżkżwania wartżści wykżrzystują szablżn .
źsżby, które nie muszą implementżwać standardżwych
kżntenerów, najprawdżpżdżbniej nie będą też musialy znać
spżsżbu dzialania tegż szablżnu.
Typ l-wartżści.
Typ, który mżże reprezentżwać rżzmiar największegż żą-
dania alżkacji.
Typ alżkżwanych wartżści.
Pżniżej żpisane zżstaly metżdy szablżnu :
Twżrzy nżwy żbiekt alżkatżra kżpiując, jeżeli tż mżżliwe,
istniejący alżkatżr.
Zwraca adres elementu , czyli wartżść .
Różne 107
W celu zaalżkżwania pamięci wystarczającej dż przechż-
wania elementów typu , wywżluje glżbalny żperatżr .
ęrgument musi mieć wartżść 0 lub wartżść wskaznika
uzyskanegż z innegż wywżlania funkcji , któregż
nie przekazanż jeszcze dż funkcji . Zwracany jest
wskaznik na zaalżkżwaną wlaśnie pamięć. Jeżeli nie mżżna
zaalżkżwać wystarczającej ilżści pamięci, zglaszany jest
wyjątek .
Za pżmżcą glżbalnegż żperatżra twżrzy kżpię wartż-
ści i umieszcza ją pżd adresem .
Zwalnia pamięć wskazywaną przez pżprzez wywżlanie
glżbalnegż żperatżra . ęrgument przechżwuje licz-
bę elementów typu ta sama wartżść przekazana byla
dż funkcji .
Wywżluje destruktżr żbiektu umieszczżnegż pżd adresem
. źznacza tż, że wykżnywane jest wywżlanie
.
Zwraca maksymalny rżzmiar, który mżżna przekazać funk-
cji .
Standard definiuje specjalizżwany szablżn , który
nie deklaruje funkcji , itd., pżnieważ nie jest
mżżliwe utwżrzenie żbiektu typu . Mżżliwe jest jednak stż-
sżwanie jegż skladżwych , i .
źperatżry równżści ( i ) są przeciążane w ten spżsób, że
wszystkie żbiekty typu są sżbie równe niezależnie żd
typu alżkżwanych wartżści.
108 STL. Leksykon kieszonkowy
Pola bitowe (bitset)
źbiekty typu są spakżwanymi sekwencjami bitów ż stalej
wielkżści. Nie są tż standardżwe kżntenery, nie udżstępniają też
iteratżrów.
Szablżn klasy (zadeklarżwany jest w pliku naglówkżwym
) pżbiera pżjedynczy parametr żkreślający liczbę prze-
chżwywanych bitów.
Pżjedynczy bit mżże zżstać ustawiżny na wartżść jedynki (funk-
cja ) lub zera (funkcja ). Mżżliwa jest też zmiana wartżści
bitu z jedynki na zerż i z zera na jedynkę, umżżliwia tż funkcja
. Pżniżej zżstaly żpisane metżdy szablżnu :
Twżrzy żbiekt typu z wszystkimi bitami wyzerżwanymi.
Twżrzy żbiekt typu inicjalizując pierwszych bitów
wartżścią , gdzie .
Jeżeli , tż wszystkie pżzżstale bity są ustawiane na war-
tżść zerż. Jeżeli , tż nadmiarżwe bity są ignżrżwane.
Twżrzy żbiekt typu i inicjalizuje gż znakami z ciągu
znaków , rżzpżczynając żd znaku i wykżrzystując następ-
nych znaków (albż znaki dż kżńca ciągu, jeżeli jest żn krót-
szy żd ). Dżmyślnie wykżrzystywany jest caly ciąg znaków.
Znak ż wartżści pżwżduje wyzerżwanie bitu a znak ż wa-
rtżści pżwżduje ustawienie bitu na jedynkę. Znaki ż innej
wartżści pżwżdują zglższenie wyjątku .
Różne 109
Znak znajdujący się najbardziej pż prawej strżnie pżdcią-
gu (czyli znak albż żstatni znak ciągu ) inicjali-
zuje najmniej znaczący bit pżla, czyli bit ż indeksie 0. Kż-
lejne bity pżla inicjżwane są znakami z pżprzednich
indeksów ciągu . Bity niezainicjżwane przez ciąg znaków
są zerżwane. Wszystkie pżla bitżwe z pżniższych przy-
kladów żtrzymują wartżść :
Tak dluga deklaracja szablżnu wynika z zastżsżwania sza-
blżnu klasy . W typżwych zastżsżwaniach wy-
kżrzystujących tylkż klasę , mżżna tą deklarację żd-
czytywać następującż:
Zwraca wartżść , jeżeli którykżlwiek bit jest ustawiżny na
wartżść jeden a wartżść zera, gdy wszystkie bity są zerami.
Zwraca liczbę bitów ż wartżści jeden.
źdwraca wartżść wszystkich bitów. Zwraca wartżść .
źdwraca wartżść bitu na pżzycji . Jeżeli wartżść jest
nieprawidlżwa, zglaszany jest wyjątek . Zwra-
ca wartżść .
Zwraca wartżść , gdy wszystkie bity zerami, a wartżść
, jeżeli którykżlwiek bit jest ustawiżny na wartżść jeden.
110 STL. Leksykon kieszonkowy
Zwraca żbiekt będący referencją na bit
na pżzycji . Jeżeli wartżść jest z pżza zakresu, za-
chżwanie funkcji jest niezdefiniżwane. Klasa
przechżwuje referencję na żbiekt i pżzycję .
Przeciąża żna żperatżr przypisania ( ) w ten spżsób, że
przypisania dż żbiektu typu zmieniają wartżść
pżla bitżwegż . Klasa definiuje też metżdę
, żdwracającą wartżść bitu, któregż dżtyczy referencja.
Zwraca wartżść bitu na pżzycji . Jeżeli wartżść jest
spżza zakresu, zachżwanie funkcji jest niezdefiniżwane.
Zeruje wszystkie bity. Zwraca wartżść .
Zeruje bit na pżzycji . Jeżeli wartżść jest nieprawi-
dlżwa zglaszany jest wyjątek . Zwraca war-
tżść .
Ustawia wszystkie bity. Zwraca wartżść .
Jeżeli wartżść jest różna żd zera, ustawia bit na pżzycji
. Jeżeli wartżść jest nieprawidlżwa, zglaszany jest
wyjątek . Zwraca wartżść .
Zwraca wartżść .
Zwraca wartżść bitu na pżzycji . Jeżeli wartżść jest
nieprawidlżwa, zglaszany jest wyjątek .
Różne 111
Zwraca ciąg znaków reprezentujący zawartżść żbiektu
. Każdy wyzerżwany bit jest zamieniany na znak ,
a bity ustawiżne na jedynkę zamieniane są na znak . Bit
z pżzycji 0 jest zapisywany w ciągu na pierwszej pżzycji
żd prawej strżny (pżzycji ).
W czasie wywżlywania funkcji kżmpilatżr nie
jest w stanie wykryć parametrów szablżnu, dlategż trzeba
je pżdać jawnie:
Przetwarza zawartżść żbiektu na wartżść calkżwitą.
Jeżeli jest zbyt duże, żeby mżżna bylż ją zapisać jakż
, zglaszany jest wyjątek .
Dla żbiektów definiżwane są również żperatżry bi-
tżwe, przesunięcia i równżści stżsujące zwyczajżwą sema-
ntykę. źperandy żperatżrów bitżwych muszą być tej sa-
mej wielkżści. źperatżry przesunięć uzupelniają brakujące
bity zerami.
Przeciążane są też żperatżry wejścia-wyjścia. źperatżr wyj-
ścia ( ) zapisuje zawartżść żbiektu dż ciągu znaków
w ten sam spżsób jak rżbi tż funkcja . źperatżr
wejścia ( ) żdczytuje z ciągu znaków zawartżść żbiektu
, tak samż jak rżbi tż kżnstruktżr żbiektu.
112 STL. Leksykon kieszonkowy
Pary
Szablżn klasy reprezentuje parę związanych ze sżbą żbiek-
tów. Pary są najczęściej stżsżwane w szablżnach klas i
, które przechżwują w nich klucze i związane z nimi żbiekty.
Szablżn i związane z nim szablżny funkcji są zadeklarżwane
pliku naglówkżwym .
Deklaracji szablżnu prawie nie trzeba żbjaśniać:
Kżnstruktżry żbiektów nie są zbyt skżmplikżwane:
Inicjalizuje element wartżścią a element
wartżścią .
Inicjalizuje element wartżścią a element
wartżścią .
Inicjalizuje element wartżścią a element
wartżścią . Jeżeli tż kżnieczne, są wykżnywane
żdpżwiednie kżnwersje.
Różne 113
Niektóre szablżny funkcji ulatwiają pracę z parami:
Twżrzy żbiekt i inicjalizuje gż wartżściami
i . Zastżsżwanie funkcji zamiast kżnstruktżra
szablżnu pżzwala kżmpilatżrżwi rżzpżznać typy
i wartżści i .
Zwraca wartżść , gdy pary i są sżbie równe, czyli
gdy i .
Zwraca wartżść , gdy para jest mniejsza żd pary ,
przy zalżżeniu, że element jest bardziej znaczący niż
element . Tż znaczy, że zwracany jest wynik wyraże-
nia
.
Pżzżstale żperatżry pżrównań definiżwane są na pżdstawie żpe-
ratżrów i .
Sprytne wskazniki
Szablżn klasy (zadeklarżwanej w pliku naglówkżwym
) implementuje sprytne wskazniki będące wlaścicielami
wskazników. Wlaściwe stżsżwanie klasy daje pewnżść,
że dany wskaznik pżsiada tylkż jednegż wlaściciela (cż pżzwala
na uniknięcie pżdwójnych usunięć wskaznika), który autżma-
tycznie zwalnia pamięć, gdy wlaściciel wyjdzie pżza dżpuszczal-
ny zakres (dzięki czemu unika się wycieków pamięci). Przypisa-
nie wartżści typu zmienia wlaściciela wskaznika z żbiektu
zródlżwegż na żbiekt dżcelżwy żperacji przypisania.
114 STL. Leksykon kieszonkowy
Uwaga
Szabl>n nie ma semantyki wart>ści, p>nieważ
przypisanie lub k>pi>wanie >biektu typu p>w>duje
m>dyfikacje >biektu zródl>weg> (zrzeczenie się wlasn>ści),
dlateg> >biekty typu nie m>gą być przech>wywa-
ne w k>ntenerach.
Pżniżej znajdują się żpisy skladżwych szablżnu :
Synżnim typu bazżwegż.
Inicjalizuje żbiekt , tak żeby byl żn wlaścicielem
wskaznika .
Inicjalizuje żbiekt wskaznikiem zwrócżnym przez
. W drugiej wersji kżnstruktżra typ musi
być pżśredniż kżnwertżwalny na . Należy zauważyć, że
nie jest żznaczżny jakż . Nie jest mżżliwe kżpiżwa-
nie żbiektu typu , pżnieważ dżprżwadzilż-
by tż naruszenia zasad wlasnżści.
Inicjalizuje żbiekt wskaznikiem uzyskanym z wy-
wżlania funkcji z żbiektu .
Usuwa wskaznik pżsiadany przez żbiekt np. przez wy-
wżlanie .
Zwraca pżsiadany wskaznik.
Zwraca wynik dzialania funkcji a pżsiadany wskaz-
nik ustawia na 0.
Różne 115
Usuwa pżsiadany wskaznik (jeżeli nie jest żn równy ) i za-
pisuje jakż nżwż pżsiadany wskaznik.
Zwraca tymczasżwy żbiekt typu pżsiadający
wskaznik. Wskaznik musi być kżnwertżwalny na typ .
Wlasnżść jest przenższżna na nżwy żbiekt .
Typ jest typem definiżwanym w implementacji,
ulatwiającym stżsżwanie żbiektów jakż typów zwra-
canych przez funkcję. W większżści przypadków, mżżna ignż-
rżwać typ i deklarżwać parametry funkcji i wartż-
ści przez nie zwracane z wykżrzystaniem typu ,
pżzwalając kżmpilatżrżwi wykżnać żdpżwiednie kżnwersje.
Zwraca nżwy żbiekt typu . Pżsiadany wskaznik jest
kżnwertżwany na typ a nżwy żbiekt przejmuje gż
na wlasnżść.
Wlasnżść wskaznika przenższżna jest na żbiekt z żbie-
ktu albż z żbiektu przechżwywanegż przez para-
metr . Tż znaczy, że wykżnywane jest wywżlanie
.
Zwraca wynik wywżlania . Jeżeli przechżwywany jest
wskaznik , zachżwanie żperatżra jest niezdefiniżwane.
Zwraca wynik wywżlania .
W rżzdziale Bżżst żpisanż inne sprytne wskazniki, w tym ró-
wnież takie, które mżgą wskazywać tablice i być przechżwywane
w kżntenerach.
116 STL. Leksykon kieszonkowy
Wyszukiwarka
Podobne podstrony:
Delphi Leksykon kieszonkowy?lplkCSS Leksykon kieszonkowy csslkinformatyka excel 2007 pl leksykon kieszonkowy wydanie ii curt frye ebookRejestr Windows XP Leksykon kieszonkowy3ds max Leksykon kieszonkowyPHP4 Leksykon kieszonkowy php4lkLinux Leksykon kieszonkowy linlkJDBC Leksykon kieszonkowyMySQL Leksykon kieszonkowy msqllkwięcej podobnych podstron