• Artykuły
  • Forum
  • Ciekawostki
  • Encyklopedia
  • Standard Template Library



    Podstrony: [1] 2 [3]
    Przeczytaj także...
    Konstruktor w programowaniu obiektowym to specjalna metoda danej klasy, wywoływana podczas tworzenia jej instancji. Zadaniem konstruktora jest zainicjowanie obiektu, a w niektórych językach programowania także utworzenie obiektu.Teoria złożoności obliczeniowej – dział teorii obliczeń, którego głównym celem jest określanie ilości zasobów potrzebnych do rozwiązania problemów obliczeniowych. Rozważanymi zasobami są takie wielkości jak czas, pamięć lub liczba procesorów.
    Opis[ | edytuj kod]

    STL jest to tzw. biblioteka generyczna, oznacza to, że jej komponenty są parametryzowane, niemal każdy z nich jest szablonem. Umożliwia to równie dobrą współpracę z typami wbudowanymi w język, z typami wbudowanymi w bibliotekę, co z typami zdefiniowanymi przez użytkownika, pod warunkiem, że spełniają pewne określone warunki.

    Typ – w językach programowania opis rodzaju, struktury i zakresu wartości, jakie może przyjmować dany literał, zmienna, stała, argument, wynik funkcji lub wartość.Szablon (ang. template) to jedno z podejść do programowania uogólnionego stosowane w językach C++ oraz D. Podobnym rozwiązaniem są typy generyczne (lub uogólnione) stosowane w językach takich jak Java, C#, Eiffel, VB .NET, Haskell.

    Jedną z najważniejszych rzeczy wprowadzonych przez STL, są kontenery, czyli obiekty zbiorcze. Jest ich kilka rodzajów, różnią się konstrukcją i tym samym wydajnością poszczególnych operacji. Np. kontener typu vector trzyma obiekty w liniowym obszarze pamięci, co umożliwia swobodny dostęp (ang. random access) do wszystkich elementów – można ten zbiornik indeksować liczbą całkowitą, podobnie jak robi to się ze zwykłymi tablicami. Niestety, wstawienie nowego elementu gdziekolwiek indziej, niż na końcu jest operacją liniowego czasu, gdyż trzeba "odsunąć" elementy, żeby zrobić miejsce na nowy. Z kolei, w kontenerze typu list, wstawianie i usuwanie elementów jest operacją o stałym czasie wykonania, ale nie jest możliwe indeksowanie.

    Funktor – w teorii kategorii semantycznych wyrażenie, które nie jest nazwą ani zdaniem, służące do konstrukcji wyrażeń bardziej złożonych – nazw, zdań lub bardziej złożonych funktorów. Wyrażenie, wraz z którym dany funktor tworzy wyrażenie bardziej złożone, to argument funktora.W programowaniu obiektowym iteratorem nazywamy obiekt pozwalający na sekwencyjny dostęp do wszystkich elementów lub części zawartych w innym obiekcie, zwykle kontenerze lub liście. Iterator jest czasem nazywany kursorem, zwłaszcza w zastosowaniach związanych z bazami danych.

    Koncept określa podstawowe warunki, jakie powinien spełniać typ, aby móc być zaliczonym do odpowiedniej kategorii i tym samym obsługiwanym przez odpowiednie elementy biblioteki. Określa też możliwości, jakie udostępnia dany typ. Np. list jest zbiornikiem dwukierunkowym, co oznacza, że można się po nim poruszać jedynie krokowo w obu kierunkach. Natomiast vector jest zbiornikiem swobodnego dostępu i umożliwia poza tym jeszcze indeksowanie elementów wewnątrz zbiornika. Inny model z kolei prezentują sortowane zbiorniki asocjacyjne, jak set i map. Elementy wewnątrz nich są posortowane i wyszukiwanie elementu jest podobne do wyszukiwania binarnego, które posiada logarytmiczną złożoność czasową. Zbiornik set jest zwykłym zbiornikiem asocjacyjnym i zawiera tylko elementy kluczowe (służy tylko do tego, żeby można było w nim łatwo dany element wyszukać), natomiast map jest parowym zbiornikiem asocjacyjnym i zawiera pary klucz-wartość.

    Tablica w informatyce to kontener danych dostępnych, w którym poszczególne komórki dostępne są za pomocą kluczy, które najczęściej przyjmują wartości numeryczne. Rozmiar tablicy jest albo ustalony z góry (tablice statyczne), albo może się zmieniać w trakcie wykonywania programu (tablice dynamiczne).Liczby całkowite – liczby naturalne dodatnie N + = { 1 , 2 , 3 , … } {displaystyle mathbb {N} _{+}={1,2,3,dots }} oraz liczby przeciwne do nich { − 1 , − 2 , − 3 , … } {displaystyle {-1,-2,-3,dots }} , a także liczba zero. Uogólnieniem liczb całkowitych są liczby wymierne i tym samym liczby rzeczywiste, szczególnym przypadkiem liczb całkowitych są: liczby naturalne.

    Istnieją też koncepty stanowiące wymagania dla typów użytkownika. Np. "przypisywalny" oznacza, że obiekt ma mieć możliwość przypisania do niego wartości, a "domyślnie konstruowalny" oznacza, że typ musi posiadać konstruktor domyślny. Zbiorniki list i vector stawiają takie wymagania, gdyż implementacja zakłada tworzenie takich obiektów "bez podania przyczyny" (lista ma jeden element nieużywany, który stanowi węzeł łączący początek z końcem i jest używany do określania tzw. za-końca).

    Abstrakcją w programowaniu nazywamy pewnego rodzaju uproszczenie rozpatrywanego problemu, polegające na ograniczeniu zakresu cech manipulowanych obiektów wyłącznie do cech kluczowych dla algorytmu, a jednocześnie niezależnych od implementacji. W tym sensie abstrakcja jest odmianą formalizmu matematycznego. Cel stosowania abstrakcji jest dwojaki: ułatwienie rozwiązania problemu i zwiększenie jego ogólności.Wydajność oprogramowania wyraża ilość pracy wykonanej w określonym przedziale czasu. Im więcej pracy program wykona w jednostce czasu, tym większa jest jego wydajność. Uściślając, wydajność programu jest mierzona liczbą jednostek danych wejściowych (rozmiarem danych), którymi w danym czasie program ten zarządza w celu przekształceniu ich na jednostki wyjściowe (dane).

    Iteratory[ | edytuj kod]

    Po kontenerach można się poruszać za pomocą iteratorów. Są to specjalne obiekty przeznaczone do takich właśnie operacji. Iterator, podobnie jak wszystko w STL-u, musi podpadać pod określony koncept. Koncept iteratora spełnia np. wskaźnik, gdyż można na nim wykonać operacje wymagane dla iteratora; co więcej, jest to iterator swobodnego dostępu, gdyż udostępnia zarówno operatory ++ i --, jak też operację awansu (+= i -=) i dystansu (-).

    Active Template Library - biblioteka napisana w języku C++, składająca się z zestawu klas szablonowych, ułatwiających tworzenia komponentów w technologii COM. Biblioteka została opracowana i udostępniona przez firmę Microsoft.Indeksowanie (ang. indexing) – proces tworzenia i utrzymywania indeksu umożliwiającego skrócenie czasu dostępu do danych.

    Algorytmy[ | edytuj kod]

    Oprócz tego w STL definiuje się też algorytmy, czyli odpowiednie wzorce funkcji, które mają wykonać pewne abstrakcyjne zadania na określonym kontenerze. Przykładowym algorytmem jest "for_each", który ma wywołać podany funktor na określonym zakresie elementów. Innymi przykładami algorytmów są "reverse", który odwraca kolejność elementów w zbiorniku, "find", który wyszukuje określoną wartość w zbiorniku, czy "find_if", który wyszukuje element spełniający warunek określony podanym funktorem.

    Lista - struktura danych służąca do reprezentacji zbiorów dynamicznych, w której elementy ułożone są w liniowym porządku. Rozróżniane są dwa podstawowe rodzaje list: lista jednokierunkowa w której z każdego elementu możliwe jest przejście do jego następnika oraz lista dwukierunkowa w której z każdego elementu możliwe jest przejście do jego poprzednika i następnika.Pamięć komputerowa to różnego rodzaju urządzenia i bloki funkcjonalne komputera, służące do przechowywania danych i programów (systemu operacyjnego oraz aplikacji). Potocznie przez "pamięć komputerową" rozumie się samą pamięć operacyjną.

    W STL każdy algorytm może pracować na każdym zbiorniku specjalizowanym każdym możliwym typem. Choć nie każda kombinacja algorytmu i zbiornika ma sens, np. nie ma sensu wywoływać algorytmu "sort" na zbiorniku takim jak set. Taki sposób zaprogramowania tej biblioteki zapewnił jej szerokie zastosowanie oraz generyczność, czyli możliwość adaptowania się do elementów nieznanych w momencie jej opracowywania.

    Hewlett-Packard Company (HP), NYSE: HPQ - amerykańska firma informatyczna z siedzibą w Palo Alto w Kalifornii. W 2010 roku druga pod względem obrotów największa firma informatyczna świata. Producent m.in. komputerów osobistych, serwerów, drukarek i urządzeń poligraficznych oraz dostawca usług IT. W 1999 z HP wyodrębniono działy produkujące elektroniczny sprzęt pomiarowy, podzespoły oraz sprzęt medyczny i naukowy, formując osobną spółkę Agilent Technologies. W 2002 firma przejęła konkurenta Compaq Computer. W roku 2010 firma zatrudniała na całym świecie ok. 324 tys. osób.Programowanie uogólnione (lub generyczne, z ang. generic programming) – jeden z paradygmatów programowania. Programowanie uogólnione pozwala na pisanie kodu programu bez wcześniejszej znajomości typów danych, na których kod ten będzie pracował. Obecnie wiele języków programowania ma możliwość wykorzystywania uogólnień, np. C++, D, Java oraz Haskell.

    Ponieważ szablony C++ są bardzo efektywne, STL jest o wiele popularniejszy niż podobne biblioteki pisane dla C, w przypadku których wydajność była istotnie niższa od ręcznie programowanych rozwiązań.

    Zobacz też[ | edytuj kod]

  • Active Template Library


  • Podstrony: [1] 2 [3]



    w oparciu o Wikipedię (licencja GFDL, CC-BY-SA 3.0, autorzy, historia, edycja)

    Warto wiedzieć że... beta

    Kontener (lub inaczej pojemnik, ang. container, collection) - struktura danych, której zadaniem jest przechowywanie w zorganizowany sposób zbioru danych (obiektów). Kontener zapewnia narzędzia dostępu, w tym dodawanie, usuwanie i wyszukiwanie danej (obiektu) w kontenerze. W zależności od przyjętej organizacji, poszczególne kontenery różnią się wydajnością poszczególnych operacji.
    Wyszukiwanie binarne jest algorytmem opierającym się na metodzie dziel i zwyciężaj, który w czasie logarytmicznym stwierdza, czy szukany element znajduje się w uporządkowanej tablicy i jeśli się znajduje, podaje jego indeks. Np. jeśli tablica zawiera milion elementów, wyszukiwanie binarne musi sprawdzić maksymalnie 20 elementów ( log 2 ⁡ 1 000 000 ≈ 20 {displaystyle log _{2}{1,000,000}approx 20} ) w celu znalezienia żądanej wartości. Dla porównania wyszukiwanie liniowe wymaga w najgorszym przypadku przejrzenia wszystkich elementów tablicy.
    Język programowania – zbiór zasad określających, kiedy ciąg symboli tworzy program komputerowy oraz jakie obliczenia opisuje.
    Biblioteka (w informatyce) – zbiór klas, funkcji (i ew. innych konstrukcji programistycznych), z których korzystają różne programy.
    Algorytm – w matematyce skończony ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego rodzaju zadań. Słowo "algorytm" pochodzi od starego angielskiego słowa algorism, oznaczającego wykonywanie działań przy pomocy liczb arabskich (w odróżnieniu od abacism – przy pomocy abakusa), które z kolei wzięło się od nazwiska, które nosił Muhammad ibn Musa al-Chuwarizmi (أبو عبد الله محمد بن موسى الخوارزمي), matematyk perski z IX wieku.
    C – imperatywny, strukturalny język programowania wysokiego poziomu stworzony na początku lat siedemdziesiątych XX w. przez Dennisa Ritchiego do programowania systemów operacyjnych i innych zadań niskiego poziomu.
    W językach programowania pozwalających na bezpośredni dostęp do pamięci (jak np. asembler, C, C++, Cyclone) pamięć jest reprezentowana jako jednowymiarowa tablica bajtów – wszystkie zmienne (statyczne i dynamiczne) są umieszczane w tej „tablicy”.

    Reklama

    Czas generowania strony: 0.023 sek.