C++ technikai jelentés 1

A C++ Technical Report 1 (TR1) az ISO/IEC TR 19768 szabvány általános neve, a C++ Extension Libraries pedig egy olyan dokumentum, amely kiegészítéseket javasol a C++ könyvtárszabványhoz. A kiegészítők közé tartoznak a reguláris kifejezések , intelligens mutatók , hash-táblázatok és véletlenszám-generátorok . A TR1 nem szabvány, hanem dokumentumtervezet. Javaslatai többsége azonban a következő hivatalos szabvány, a C++11 részévé vált .

A dokumentumot először a C++ Library Extensions technikai jelentéstervezet tervezeteként terjesztették , majd 2007-ben ISO/IEC szabványként tették közzé ISO/IEC TR 19768:2007 címmel .

A TR1-ben leírt kiegészítések

A TR1 által leírt összes kiegészítés az std::tr1 névtérben található

Általános segédprogramok

Funkcionális objektumok

A tr1/functional fejlécfájlban van meghatározva

Metaprogramozás és típusjellemzők

Számos metasablon van definiálva a tr1/functional fájlban: is_pod, has_virtual_destructor, remove_extent és mások. Boost típusú jellemzők alapján.

PRNG

A tr1/random fejlécfájl a következőket határozza meg:

Speciális matematikai függvények

A TR1 egyes funkciói, például speciális matematikai függvények és néhány C99 kiegészítés , amelyek nem szerepelnek a TR1 Visual C++ megvalósításában.

Ezek a kiegészítések nem kerültek be a C++11-be.

Az alábbi táblázat felsorolja a TR1-ben leírt 23 speciális funkciót.

Funkció neve Funkció prototípusa matematikai kifejezés
Általánosított Laguerre-polinomok double assoc_laguerre (előjel nélküli n, előjel nélküli m, kettős x) ;
Kapcsolódó Legendre-polinomok double assoc_legendre (előjel nélküli l, előjel nélküli m, kettős x) ;
béta funkció kettős béta (dupla x, dupla y) ;
Teljes normál elliptikus Legendre integrál az 1. típusú double comp_ellint_1 (double k) ;
Teljes normál elliptikus Legendre integrál, a 2. fajtából double comp_ellint_2 (dupla k) ;
Teljes, normál elliptikus Legendre integrál, a 3. fajtából double comp_ellint_3 (double k, double nu) ;
Degenerált hipergeometriai függvények double conf_hyperg (double a, double c, double x) ;
Szabályos hengeres Bessel-funkciók double cyl_bessel_i (double nu, double x) ;
Az első típusú hengeres Bessel-függvények double cyl_bessel_j (double nu, double x) ;
hu: Szabálytalanul módosított hengeres Bessel-függvények double cyl_bessel_k (double nu, double x) ;
hu:Hengeres Neumann-függvények

hu: A második típusú hengeres Bessel-függvények

double cyl_neumann (double nu, double x) ;
Hiányos, 1. típusú normál elliptikus integrál double ellint_1 (dupla k, dupla phi) ;
2. típusú, hiányos normál elliptikus integrál double ellint_2 (dupla k, dupla phi) ;
3. típusú, hiányos normál elliptikus integrál double ellint_3 (double k, double nu, double phi) ;
Integrál exponenciális függvény kettős expint (dupla x) ;
Hermite polinomok kettős remete (előjel nélküli n, kettős x) ;
hu:Hipergeometrikus sorozat double hyperg (dupla a, dupla b, dupla c, dupla x) ;
hu:Laguerre polinomok double laguerre (előjel nélküli n, dupla x) ;
hu:Legendre polinomok kettős legenda (jel nélküli l, kettős x) ;
Riemann zéta függvény double riemann_zeta (dupla x) ;
hu: Az első típusú gömb alakú Bessel-függvények double sph_bessel (előjel nélküli n, dupla x) ;
hu:Gömb alakú kapcsolódó Legendre-függvények double sph_legendre (előjel nélküli l, előjel nélküli m, kettős théta) ;
hu:Gömb alakú Neumann-függvények

hu: Második típusú gömb alakú Bessel-függvények

double sph_neumann (előjel nélküli n, dupla x) ;

Mindegyik funkcióhoz két további lehetőség tartozik. Ha egy függvénynévhez F' vagy 'L' utótagot adunk, olyan függvényt kapunk, amely lebegő vagy hosszú kettős értékekre hat. Például:

float sph_neumannf ( előjel nélküli n , float x ) ; long double sph_neumannl ( előjel nélküli n , hosszú dupla x ) ;

Konténerek

A sorok típusa a tuple, amely a Boost Tuple-n alapul, hasonló az std:pair kiterjesztéshez több objektum esetén.

A rögzített hosszúságú tömbök típusa a Boost Array-n alapuló tömb.

Hash-tárolók

Fejlécfájlok unordered_set, unordered_map. Típusok: unordered_set, unordered_multiset, unordered_map, unordered_multimap (hasonló a set, multiset, map, multimap típusokhoz). Átlagosan állandó hozzáférési időt biztosítanak, de a legrosszabb esetben a művelet időtartama lineárisan bonyolult lesz a konténerben lévő elemek számától függően.

Reguláris kifejezések

regex fejlécfájl, biztosítja a regex, regex_match, regex_search, regex_replace stb. A Boost RegEx alapján

C kompatibilitás

A C++ fejlesztésének egyik koncepciója az volt, hogy a lehető legjobban kompatibilis legyen a C programozási nyelvvel. Ez a koncepció azonban nem volt és nem is prioritás, hanem csak erősen ajánlott, ezért a C ++ nem tekinthető a C szuperhalmazának (e nyelvek szabványai különböznek). A TR1 egy kísérlet a nyelvek közötti különbségek egy részének összeegyeztetésére azáltal, hogy különböző fejléceket ad hozzá a következő C++ könyvtárakhoz: <complex>, <locale>, stb. Ezek a változtatások segítenek a C++ és a C99<cmath> összhangba hozásában (a C99 nem minden része szerepel a TR1-ben).

2. technikai jelentés

A tervek szerint a C++11 szabványosítást követően megjelennek a következő kiegészítések, a C++ Technical Report 2 [1] . A szabványosítási bizottság azonban ezt követően felhagyott a TR2 -vel, és a kompakt, tartomány-specifikus specifikációkat részesítette előnyben [2] .

Néhány javasolt bővítmény:

Lásd még

Jegyzetek

  1. TR2 pályázati felhívás . Letöltve: 2013. április 17. Az eredetiből archiválva : 2013. április 18..
  2. TR2 halott; több TR jön helyette .  (nem elérhető link)

Irodalom

Linkek