Technical Report 1

Z Wikipedii, wolnej encyklopedii
(Przekierowano z TR1)
Skocz do: nawigacji, szukaj

Technical Report 1 (TR1) to zbiór proponowanych rozszerzeń do biblioteki standardowej C++, takich jak wyrażenia regularne, sprytne wskaźniki, tablice haszujące i generatory liczb losowych. TR1 nie jest jeszcze ustandaryzowany, ale prawdopodobnie stanie się w dzisiejszej formie częścią następnego oficjalnego standardu C++. W tym czasie twórcy narzędzi mogą pomocniczo używać tego dokumentu.

TR1 to nie wszystkie rozszerzenia do biblioteki standardowej które będą dostępne w następnym standardzie; dla przykładu następny standard, C++0x, może zawierać obsługę dla wątków. Istnieje też drugi Technical Report, TR2 planowany do opublikowania po C++0x.

Nowe komponenty znajdują się w przestrzeni nazw std::tr1 aby oddzielić je od obecnej biblioteki standardowej.

Spis treści

[edytuj] Komponenty

[edytuj] Generalne narzędzia

[edytuj] Reference Wrapper

  • przeniesiony z Boost.Ref
  • dodatki do pliku nagłówkowego <functional> - cref, ref, reference_wrapper
  • umożliwia przekazywanie do algorytmów i funktorów referencji, zamiast kopii

[edytuj] Sprytne wskaźniki

  • oparte na bibliotece Boost Smart Pointer
  • dodatki do pliku nagłówkowego <memory> - shared_ptr, weak_ptr itd.
  • narzędzie do zarządzania pamięcią umożliwiające odporność na wyjątki, z użyciem idiomu Resource Acquisition Is Initialization (RAII).

[edytuj] Funktory

Cztery moduły dodane do nagłówka <functional>:

[edytuj] Polymorphic Function Wrapper

  • function
  • oparty na Boost.Function
  • przechowuje wszystkie typy dające się wywołać (wskaźnik do funkcji, wskaźnik do funkcji składowej, funktor) mające podaną sygnaturę wywołania funkcji. nie jest wymagane podanie konkretnego typu obiektu dającego się wywołać.

[edytuj] Function Object Binders

  • bind
  • skopiowany z biblioteki Boost Bind
  • zgeneralizowana wersja standardowego std::bind1st i std::bind2nd
  • binduje parametry do funktorów i pozwala na złożenie funkcji

[edytuj] Function Return Types

  • result_of
  • skopiowany z Boost
  • ustala typ wyrażenia wywołania

[edytuj] mem_fn

  • mem_fn
  • oparte na bibliotece Boost Mem Fn
  • dodatek do standardowych std::mem_fun i std::mem_fun_ref
  • pozwala na traktowanie wskaźników do funkcji składowych jako funktorów

[edytuj] Metaprogramming and Type Traits

  • nowy plik nagłówkowy <type_traits> - is_pod, has_virtual_destructor, remove_extend, itd.
  • oparty na bibliotece Boost Type Traits
  • umożliwia metaprogramowanie pozwalając na zapytania i konwersje między różnymi typami

[edytuj] Narzędzia numeryczne

[edytuj] Generacja liczb losowych

  • nowy plik nagłówkowy <random> - variate_generator, mersenne_twister, poisson_distribution, itd.
  • narzędzia do generowania liczb losowych z użyciem różnych silników i rozkładów prawdopodobieństwa

[edytuj] Funkcje matematyczne

  • dodatki do plików nagłówkowych <cmath>/<math.h> - beta, legendre, itd.
  • funkcje matematyczne

[edytuj] Kontenery

[edytuj] Krotki

  • nowy plik nagłówkowy <tuple>
  • oparty na bibliotece Boost Tuple
  • rozszerzenie standardowego std::pair
  • stałego rozmiaru kolekcje elementów mogących mieć różne typy

[edytuj] Tablica stałego rozmiaru

  • nowy plik nagłówkowy <array>
  • pobrany z biblioteki Boost Array
  • w przeciwieństwie do dynamicznych typów tablicowych takich jak standardowy std::vector

[edytuj] Tablica haszująca

  • nowe pliki nagłówkowe <unordered_set>, <unordered_map>
  • nowa implementacja, nie oparta na istniejącej bibliotece, z api nie do końca kompatybilnym z istniejącymi bibliotekami
  • tak jak wszystkie tablice haszujące zwykle umożliwia dostęp do elementów w czasie stałym, a w najgorszym przypadku w czasie liniowym do rozmiaru pojemnika

[edytuj] Wyrażenia regularne

  • nowy plik nagłówkowy <regex> - regex, regex_match, regex_search, regex_replace, itd.
  • oparte na bibliotece Boost RegEx

[edytuj] Kompatybilność z C

TR1 próbuje poprzez różne dodatki do plików nagłówkowych z C++, takich jak <complex>, <locale>, <cmath> przybliżyć C++ do wersji C99 standardu C. (nie wszystkie części C99 są dostępne w TR1).

[edytuj] Zobacz też

  • Boost, zbiór przenośnych bibliotek dla języka C++, wiele z nich znajduje się w TR1.
  • Standard Template Library, część obecnej biblioteki standardowej C++
  • Dinkumware, jedyny komercyjny dostawca w pełni implementujący TR1
Osobiste
Przestrzenie nazw

Warianty
Działania
Nawigacja
Dla czytelników
Dla wikipedystów
Narzędzia
Drukuj lub eksportuj
W innych językach