14
Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: [email protected] PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ IDZ DO IDZ DO ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG KATALOG KSI¥¯EK KATALOG KSI¥¯EK TWÓJ KOSZYK TWÓJ KOSZYK CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE O NOWOCIACH ZAMÓW INFORMACJE O NOWOCIACH ZAMÓW CENNIK ZAMÓW CENNI K CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE SPIS TRECI SPIS TRECI DODAJ DO KOSZYKA DODAJ DO KOSZYKA KATALOG ONLINE KATALOG ONLINE STL. Leksykon kieszonkowy Czy do wyszukania wartoci w danym zakresie nale¿y u¿yæ funkcji search() czy find()? 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 jeli codziennie u¿ywasz biblioteki STL. Ksi¹¿ka Raya Lischnera „STL. Leksykon kieszonkowy” bêdzie dla Ciebie nieocenion¹ pomoc¹ -- w prosty sposób odpowiada na wszystkie takie pytania. 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 dotycz¹ce wywo³añ funkcji, typów zwracanych przez te funkcje, parametrów szablonów i wiele wiêcej. W po³¹czeniu z ksi¹¿k¹ „C++. Leksykon kieszonkowy”, ksi¹¿ka ta pozwala na spore oszczêdnoci czasu. Na pewno przyda siê w czasie pisania programów. „STL to skondensowana wiedza i dowiadczenie, a ta ksi¹¿ka to skondensowana biblioteka STL. Nie, nie po¿yczê swojego egzemplarza… kup sobie w³asny!” Andrew Duncan, Senior Software Engeneer, Expertcity Inc. Autor: Ray Lischner T³umaczenie: Wojciech Moch ISBN: 83-7361-438-9 Tytu³ orygina³u: STL Pocket Reference Format: B5, stron: 132

STL. Leksykon kieszonkowy

Embed Size (px)

DESCRIPTION

Czy do wyszukania wartości w danym zakresie należy użyć funkcji search() czy find()? 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.Książka Raya Lischnera "STL. Leksykon kieszonkowy" będzie dla Ciebie nieocenioną pomocą -- w prosty sposób odpowiada na wszystkie takie pytania.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 dotyczące wywołań funkcji, typów zwracanych przez te funkcje, parametrów szablonów 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."STL to skondensowana wiedza i doświadczenie, a ta książka to skondensowana biblioteka STL. Nie, nie pożyczę swojego egzemplarza... kup sobie własny!"Andrew Duncan, Senior Software Engeneer, Expertcity Inc.

Citation preview

Page 1: STL. Leksykon kieszonkowy

Wydawnictwo Helion

ul. Chopina 6

44-100 Gliwice

tel. (32)230-98-63

e-mail: [email protected]

PRZYK£ADOWY ROZDZIA£PRZYK£ADOWY ROZDZIA£

IDZ DOIDZ DO

ZAMÓW DRUKOWANY KATALOGZAMÓW DRUKOWANY KATALOG

KATALOG KSI¥¯EKKATALOG KSI¥¯EK

TWÓJ KOSZYKTWÓJ KOSZYK

CENNIK I INFORMACJECENNIK I INFORMACJE

ZAMÓW INFORMACJEO NOWO�CIACH

ZAMÓW INFORMACJEO NOWO�CIACH

ZAMÓW CENNIKZAMÓW CENNIK

CZYTELNIACZYTELNIA

FRAGMENTY KSI¥¯EK ONLINEFRAGMENTY KSI¥¯EK ONLINE

SPIS TRE�CISPIS TRE�CI

DODAJ DO KOSZYKADODAJ DO KOSZYKA

KATALOG ONLINEKATALOG ONLINE

STL. Leksykonkieszonkowy

Czy do wyszukania warto�ci w danym zakresie nale¿y u¿yæ funkcji search() czy find()?

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.

Ksi¹¿ka Raya Lischnera „STL. Leksykon kieszonkowy” bêdzie dla Ciebie nieocenion¹

pomoc¹ -- w prosty sposób odpowiada na wszystkie takie pytania.

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

dotycz¹ce wywo³añ funkcji, typów zwracanych przez te funkcje, parametrów szablonów

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.

„STL to skondensowana wiedza i do�wiadczenie, a ta ksi¹¿ka to skondensowana

biblioteka STL. Nie, nie po¿yczê swojego egzemplarza… kup sobie w³asny!”

Andrew Duncan, Senior Software Engeneer, Expertcity Inc.

Autor: Ray Lischner

T³umaczenie: Wojciech Moch

ISBN: 83-7361-438-9

Tytu³ orygina³u: STL Pocket Reference

Format: B5, stron: 132

Page 2: STL. Leksykon kieszonkowy

Spis treści 3

Spis treści

Wprowadzenie..........................................................................5

Kontenery ..................................................................................8Kontenery standardowe............................................................................9Adaptory kontenerów.............................................................................11Wartości .....................................................................................................11Typowe składowe ....................................................................................12Wyjątki.......................................................................................................22Kolejki ........................................................................................................23Listy............................................................................................................24Mapy ..........................................................................................................28Kolejki priorytetowe................................................................................29Kolejki ........................................................................................................31Zbiory.........................................................................................................32Stosy ...........................................................................................................34Ciągi znaków............................................................................................35Wektory .....................................................................................................47

Iteratory...................................................................................49Kategorie iteratorów................................................................................50Stosowanie iteratorów.............................................................................51Cechy iteratorów......................................................................................54Iteratory do stałej .....................................................................................55Iteratory wstawiające...............................................................................57Iteratory strumieni wejścia-wyjścia.........................................................58Iterator typu raw storage ........................................................................65Iteratory wsteczne....................................................................................65Szablony funkcji iteratorów....................................................................70

Algorytmy ...............................................................................70Operacje niemodyfikujące ......................................................................73Porównania ...............................................................................................73Wyszukiwanie ..........................................................................................76

Page 3: STL. Leksykon kieszonkowy

4 STL. Leksykon kieszonkowy

Wyszukiwanie binarne............................................................................77Operacje modyfikujące sekwencje.........................................................79Operacje na niezainicjowanych sekwencjach ......................................85Sortowanie.................................................................................................86Łączenie .....................................................................................................88Operacje na zbiorach ...............................................................................89Operacje na stercie ...................................................................................91Permutacje.................................................................................................93Różne .........................................................................................................93Numeryczne..............................................................................................94

Funktory ..................................................................................95Stosowanie funktorów ............................................................................96Podstawy funktorów ...............................................................................98Adaptory ...................................................................................................99Funktory wiążące...................................................................................102Funktory arytmetyczne i logiczne .......................................................103Funktory porównujące ..........................................................................105

Różne......................................................................................106Alokatory.................................................................................................106Pola bitowe (bitset) ................................................................................109Pary ..........................................................................................................113Sprytne wskaźniki..................................................................................114

Boost ......................................................................................117Tablice......................................................................................................118Dynamiczne pola bitowe ......................................................................118Funktory wiążące...................................................................................119Składanie funkcji ....................................................................................120Adaptory .................................................................................................122Zmiana pliku nagłówkowego Functional ..........................................122Funkcje lambda ......................................................................................123Sprytne wskaźniki..................................................................................124

Skorowidz .............................................................................125

Page 4: STL. Leksykon kieszonkowy

106

����������� ��������������������������������� �������� ���

Różne

W tym rozdziale opisane zostaną szablony klas ���������, �������

i ��� �, których nie można przyporządkować do innych kategorii.

Alokatory

Alokator jest rozwinięciem wyrażeń � � i � � � . Standardowe

kontenery stosują alokatory do alokowania i zwalniania pa-

mięci a także do konstruowania i niszczenia obiektów zapisa-

nych w kontenerze.

Biblioteka standardowa definiuje szablon klasy ���������, który

jest domyślnym alokatorem wszystkich standardowych kontene-

rów. Możliwe jest zastosowanie innego alokatora pod warunkie-m, że udostępnia on ten sam interfejs co alokator standardowy.

Implementowanie nowego alokatora jest trudniejsze niż można

by z początku sądzić i wykracza poza ramy tej książki. W tym

podrozdziale zostaną opisane tylko sposoby zastosowania stan-

dardowego szablonu klasy ���������.

Poniżej opisane zostały typy składowe szablonu ���������:

�� � ����������������������

Typ wskaźnika na stały element.

�� � ��������������������

Typ stałej l-wartości.

Page 5: STL. Leksykon kieszonkowy

Różne 107

�� � ������������������� �

Typ reprezentujący różnicę między dowolnymi dwomawskaźnikami zwróconymi przez alokator po wywołaniufunkcji ������� ��.

�� � ����������

Typ wskaźnika.

� ���� ����������������������

Wiąże obiekt alokatora z innym typem wartości. Klasa � ���� posiada jedną deklarację �� � � — ��� � — będącąinstancją szablonu ��������� z typem �, podanym w para-metrze szablonu. Standardowe kontenery alokujące obiektypomocnicze, takie jak węzły łączące, zamiast bezpośred-niego alokowania wartości wykorzystują szablon � ���.Osoby, które nie muszą implementować standardowychkontenerów, najprawdopodobniej nie będą też musiały znaćsposobu działania tego szablonu.

�� � ��������

Typ l-wartości.

�� � ����� �������� �

Typ, który może reprezentować rozmiar największego żą-dania alokacji.

�� � ���������� �

Typ alokowanych wartości.

Poniżej opisane zostały metody szablonu ���������:

����������������������������������������������������� ���� �����������������������������������������������

Tworzy nowy obiekt alokatora kopiując, jeżeli to możliwe,istniejący alokator.

���� ��������� � � �� � ����������������� ��������������� � � �� � �������

Zwraca adres elementu , czyli wartość � .

Page 6: STL. Leksykon kieszonkowy

108 STL. Leksykon kieszonkowy

���� ������������� ��� ��!�����������"����##��������������������������� �������$�%�

W celu zaalokowania pamięci wystarczającej do przecho-

wania � elementów typu �, wywołuje globalny operator � �.

Argument ���� musi mieć wartość 0 lub wartość wskaźnika

uzyskanego z innego wywołania funkcji ������� , którego

nie przekazano jeszcze do funkcji � ������� . Zwracany jest

wskaźnik na zaalokowaną właśnie pamięć. Jeżeli nie można

zaalokować wystarczającej ilości pamięci, zgłaszany jest

wyjątek ��������.

"����������������� ��!����������"���

Za pomocą globalnego operatora � � tworzy kopię warto-

ści "�� i umieszcza ją pod adresem .

"����������������� ��!���� ��� ���

Zwalnia pamięć wskazywaną przez poprzez wywołanie

globalnego operatora � � � . Argument � przechowuje licz-

bę elementów typu � — ta sama wartość przekazana była

do funkcji ������� .

"�������� ����� ���

Wywołuje destruktor obiektu umieszczonego pod adresem

. Oznacza to, że wykonywane jest wywołanie � ��� ��

� ��������������&���.

��� ��� ������������������������

Zwraca maksymalny rozmiar, który można przekazać funk-

cji ������� .

Standard definiuje specjalizowany szablon ����������"����, którynie deklaruje funkcji ������� , ��������� itd., ponieważ nie jest

możliwe utworzenie obiektu typu "���. Możliwe jest jednak sto-

sowanie jego składowych ���� �, ���������� � i � ���.

Operatory równości ($$ i'$) są przeciążane w ten sposób, żewszystkie obiekty typu ��������� są sobie równe niezależnie od

typu alokowanych wartości.

Page 7: STL. Leksykon kieszonkowy

Różne 109

Pola bitowe (bitset)

Obiekty typu ��� � są spakowanymi sekwencjami bitów o stałej

wielkości. Nie są to standardowe kontenery, nie udostępniają też

iteratorów.

Szablon klasy ��� � (zadeklarowany jest w pliku nagłówkowym

���� ��) pobiera pojedynczy parametr ( określający liczbę prze-

chowywanych bitów.

Pojedynczy bit może zostać ustawiony na wartość jedynki (funk-

cja � �) lub zera (funkcja � � �). Możliwa jest też zmiana wartości

bitu z jedynki na zero i z zera na jedynkę, umożliwia to funkcja

���. Poniżej zostały opisane metody szablonu ��� �:

�������

Tworzy obiekt typu ��� � z wszystkimi bitami wyzerowanymi.

����������)� �����)�"��� �

Tworzy obiekt typu ��� � inicjalizując pierwszych � bitów

wartością "��� , gdzie ��$$�*+,-�./�0������ �������)� �����)�.

Jeżeli (����, to wszystkie pozostałe bity są ustawiane na war-

tość zero. Jeżeli (����, to nadmiarowe bity są ignorowane.

� ���� ��� ��� �*����!��� ��� �������!��� ��� �,��� ����������������������������)�*����!������!,������!

�� ��� �����������)�*����!������!,���##��� ��� �$%!�� ��� �����������)�*����!������!,���##��� ��� ��$

����������)�*����!������!,���##����

Tworzy obiekt typu ��� � i inicjalizuje go znakami z ciągu

znaków �, rozpoczynając od znaku i wykorzystując następ-

nych � znaków (albo znaki do końca ciągu, jeżeli jest on krót-

szy od �). Domyślnie wykorzystywany jest cały ciąg znaków.

Znak o wartości 1%1 powoduje wyzerowanie bitu a znak o wa-rtości 121 powoduje ustawienie bitu na jedynkę. Znaki o innej

wartości powodują zgłoszenie wyjątku ��"�������)�� ��.

Page 8: STL. Leksykon kieszonkowy

110 STL. Leksykon kieszonkowy

Znak znajdujący się najbardziej po prawej stronie podcią-

gu (czyli znak �34��25 albo ostatni znak ciągu �) inicjali-

zuje najmniej znaczący bit pola, czyli bit o indeksie 0. Ko-

lejne bity pola inicjowane są znakami z poprzednich

indeksów ciągu �. Bity niezainicjowane przez ciąg znaków

są zerowane. Wszystkie pola bitowe z poniższych przy-

kładów otrzymują wartość %%%222:

��� ��6���������)�72227��8��� ��6��������)�7%%%2227��8��� ��6���������)�72%22%%222%%7�!�9!�:�8��� ��6���������)�72222227�!�;!�:<�8

Tak długa deklaracja szablonu wynika z zastosowania sza-

blonu klasy ����������). W typowych zastosowaniach wy-

korzystujących tylko klasę �����), można tą deklarację od-

czytywać następująco:

��� �������������)���!���� ���$%!���������� ����$�����)##����

������ ��������

Zwraca wartość ��� , jeżeli którykolwiek bit jest ustawiony na

wartość jeden a wartość zera, gdy wszystkie bity są zerami.

��� ����������������

Zwraca liczbę bitów o wartości jeden.

��� ��(���������

Odwraca wartość wszystkich bitów. Zwraca wartość �����.

��� ��(����������� ������

Odwraca wartość bitu na pozycji ��. Jeżeli wartość �� jestnieprawidłowa, zgłaszany jest wyjątek ����������) . Zwra-

ca wartość �����.���������������

Zwraca wartość ��� , gdy wszystkie bity zerami, a wartość

���� , jeżeli którykolwiek bit jest ustawiony na wartość jeden.

Page 9: STL. Leksykon kieszonkowy

Różne 111

� � � �� ������������ ������

Zwraca obiekt ��� �##� � � �� będący referencją na bit

na pozycji ��. Jeżeli wartość �� jest z poza zakresu, za-

chowanie funkcji jest niezdefiniowane. Klasa ��� �##� � �� �� przechowuje referencję na obiekt ��� � i pozycję ��.

Przeciąża ona operator przypisania ($) w ten sposób, że

przypisania do obiektu typu � � � �� zmieniają wartość

pola bitowego ��� �. Klasa � � � �� definiuje też metodę

���, odwracającą wartość bitu, którego dotyczy referencja.

��������������� ������������

Zwraca wartość bitu na pozycji ��. Jeżeli wartość �� jest

spoza zakresu, zachowanie funkcji jest niezdefiniowane.

��� ��(�������

Zeruje wszystkie bity. Zwraca wartość �����.

��� ��(��������� ������

Zeruje bit na pozycji ��. Jeżeli wartość �� jest nieprawi-

dłowa zgłaszany jest wyjątek ����������) . Zwraca war-

tość �����.

��� ��(�������

Ustawia wszystkie bity. Zwraca wartość �����.

��� ��(��������� �����!�����"���$���� �

Jeżeli wartość "�� jest różna od zera, ustawia bit na pozycji

��. Jeżeli wartość �� jest nieprawidłowa, zgłaszany jest

wyjątek ����������) . Zwraca wartość �����.

��� ��������������

Zwraca wartość (.

����������� ������������

Zwraca wartość bitu na pozycji ��. Jeżeli wartość �� jestnieprawidłowa, zgłaszany jest wyjątek ����������) .

Page 10: STL. Leksykon kieszonkowy

112 STL. Leksykon kieszonkowy

� ���� �������������!�������������!�������,�������������������)������!�������!�,��������������������������

Zwraca ciąg znaków reprezentujący zawartość obiektu ���� �. Każdy wyzerowany bit jest zamieniany na znak 1%1,

a bity ustawione na jedynkę zamieniane są na znak 121. Bit

z pozycji 0 jest zapisywany w ciągu na pierwszej pozycji

od prawej strony (pozycji (�2).

W czasie wywoływania funkcji ��������) kompilator nie

jest w stanie wykryć parametrów szablonu, dlatego trzeba

je podać jawnie:

���##��� ��6:���������##�����)�72%2%%%2222%2%2%2%27��8���##�����)�����$����=� ���� ���������)�����!

���##�����������������!

���##��������������������8

����)� �����)�����������������

Przetwarza zawartość obiektu ��� � na wartość całkowitą.

Jeżeli ( jest zbyt duże, żeby można było ją zapisać jako ���

��)� �����), zgłaszany jest wyjątek �" ������ ����.

Dla obiektów ��� � definiowane są również operatory bi-

towe, przesunięcia i równości stosujące zwyczajową sema-

ntykę. Operandy operatorów bitowych muszą być tej sa-mej wielkości. Operatory przesunięć uzupełniają brakujące

bity zerami.

Przeciążane są też operatory wejścia-wyjścia. Operator wyj-

ścia (��) zapisuje zawartość obiektu ��� � do ciągu znaków

w ten sam sposób jak robi to funkcja ��������). Operator

wejścia (��) odczytuje z ciągu znaków zawartość obiektu��� �, tak samo jak robi to konstruktor obiektu.

Page 11: STL. Leksykon kieszonkowy

Różne 113

Pary

Szablon klasy ��� reprezentuje parę związanych ze sobą obiek-tów. Pary są najczęściej stosowane w szablonach klas �� i ��������, które przechowują w nich klucze i związane z nimi obiekty.Szablon ��� i związane z nim szablony funkcji są zadeklarowanepliku nagłówkowym ���������.

Deklaracji szablonu ��� prawie nie trzeba objaśniać:

� ���� ���� ��� ��2!��� ��� ��<������������>���� � ���2������� �8���� � ���<�������� �8���2�����8���<������8�������8�������������2�� !��������<����8��� ���� ��� ��� ��!��� ��� �?��������������������!�?����8@8

Konstruktory obiektów �����2!��<� nie są zbyt skomplikowane:

�����

Inicjalizuje element ����� wartością �2�� a element � ����

wartością �<��.

�����������2�� !��������<����

Inicjalizuje element ����� wartością a element � ����

wartością �.

� ���� ��� ��� ��!��� ��� �?����������������!�?����8

Inicjalizuje element ����� wartością =����� a element � ����wartością =� ����. Jeżeli to konieczne, są wykonywane

odpowiednie konwersje.

Page 12: STL. Leksykon kieszonkowy

114 STL. Leksykon kieszonkowy

Niektóre szablony funkcji ułatwiają pracę z parami:

� ���� ��� ��� ��2!��� ��� ��<������2!�<�����������2��!��<��

Tworzy obiekt �����2!� �<� i inicjalizuje go wartościami

� i . Zastosowanie funkcji ��A ���� zamiast konstruktora

szablonu ����� pozwala kompilatorowi rozpoznać typy �2

i �< wartości � i .

� ���� ��� ��� ��2!��� ��� ��<������������������������2!�<����!������������2!�<����

Zwraca wartość ��� , gdy pary � i są sobie równe, czyli

gdy �=������$$�=����� i �=� �����$$�=� ����.

� ���� ��� ��� ��2!��� ��� ��<�����������������������2!�<����!������������2!�<����

Zwraca wartość ��� , gdy para � jest mniejsza od pary ,

przy założeniu, że element ����� jest bardziej znaczący niż

element � ����. To znaczy, że zwracany jest wynik wyraże-

nia �=��������=������BB��'�=���������=�����������=� ����

��=� �����.

Pozostałe operatory porównań definiowane są na podstawie ope-

ratorów $$ i �.

Sprytne wskaźniki

Szablon klasy ������� (zadeklarowanej w pliku nagłówkowym

�� �����) implementuje sprytne wskaźniki będące właścicielami

wskaźników. Właściwe stosowanie klasy ������� daje pewność,

że dany wskaźnik posiada tylko jednego właściciela (co pozwalana uniknięcie podwójnych usunięć wskaźnika), który automa-

tycznie zwalnia pamięć, gdy właściciel wyjdzie poza dopuszczal-

ny zakres (dzięki czemu unika się wycieków pamięci). Przypisa-

nie wartości typu ������� zmienia właściciela wskaźnika z obiektu

źródłowego na obiekt docelowy operacji przypisania.

Page 13: STL. Leksykon kieszonkowy

Różne 115

Uwaga

Szablon ������� nie ma semantyki wartości, ponieważprzypisanie lub kopiowanie obiektu typu ������� powodujemodyfikacje obiektu źródłowego (zrzeczenie się własności),dlatego obiekty typu ������� nie mogą być przechowywa-ne w kontenerach.

Poniżej znajdują się opisy składowych szablonu �������:

�� � ���������� �

Synonim typu bazowego.

������������������$�%���������

Inicjalizuje obiekt �������, tak żeby był on właścicielemwskaźnika .

����������������� ���������� ���� ������������������������������ ���������

Inicjalizuje obiekt ������� wskaźnikiem zwróconym przez =� � �� ��. W drugiej wersji konstruktora typ �� musibyć pośrednio konwertowalny na ��. Należy zauważyć, że nie jest oznaczony jako �����. Nie jest możliwe kopiowa-nie obiektu typu �������������, ponieważ doprowadziło-by to naruszenia zasad własności.

����������������� ���������������

Inicjalizuje obiekt ������� wskaźnikiem uzyskanym z wy-wołania funkcji � � �� z obiektu �.

������������������

Usuwa wskaźnik posiadany przez obiekt np. przez wy-wołanie � � � �) ���.

���������������������

Zwraca posiadany wskaźnik.

����������������

Zwraca wynik działania funkcji ) ��� a posiadany wskaź-nik ustawia na 0.

Page 14: STL. Leksykon kieszonkowy

116 STL. Leksykon kieszonkowy

"�����������$�%���������

Usuwa posiadany wskaźnik (jeżeli nie jest on równy ) i za-pisuje jako nowo posiadany wskaźnik.

� ���� ��������������������������������������

Zwraca tymczasowy obiekt typu ��������� � posiadającywskaźnik. Wskaźnik musi być konwertowalny na typ ��.Własność jest przenoszona na nowy obiekt ��������� �.

Typ ��������� � jest typem definiowanym w implementacji,ułatwiającym stosowanie obiektów ������� jako typów zwra-canych przez funkcję. W większości przypadków, można igno-rować typ ��������� � i deklarować parametry funkcji i warto-ści przez nie zwracane z wykorzystaniem typu ������ ��,pozwalając kompilatorowi wykonać odpowiednie konwersje.

� ���� ������������������������������������

Zwraca nowy obiekt typu �������. Posiadany wskaźnik jestkonwertowany na typ �� a nowy obiekt ������� przejmuje gona własność.

������������������������� ���������� ���� ������������������������������������� ���������������������������������� ���������������

Własność wskaźnika przenoszona jest na obiekt ����� z obie-ktu albo z obiektu ������� przechowywanego przez para-metr �. To znaczy, że wykonywane jest wywołanie � � �� =� � �� ���.

�������� ����������������

Zwraca wynik wywołania �) ���. Jeżeli przechowywany jestwskaźnik ����, zachowanie operatora jest niezdefiniowane.

��������!�����������������

Zwraca wynik wywołania ) ���.

W rozdziale „Boost” opisano inne sprytne wskaźniki, w tym ró-wnież takie, które mogą wskazywać tablice i być przechowywanew kontenerach.