8063591564

8063591564



1.4. Nagłówki

Wszystkie programy w tej książce są zaimplementowane w języku C++, z wykorzystaniem biblioteki STL. Ponieważ podczas zawodów bardzo istotne jest, aby kody źródłowe implementowanych programów były jak najkrótsze, dlatego wielu zawodników stosuje pewne skróty dla najczęściej występujących w programach konstrukcji językowych. Podczas zawodów ACM ICPC, w ciągu pięciogodzinnych sesji, do rozwiązania jest 7 do 10 zadań, zatem opłaca się na początku konkursu przepisać najważniejsze instrukcje, a następnie wykorzystywać je we wszystkich pisanych programach. Instrukcje te nazywamy mianem nagłówków — zawierają one zarówno listę najczęściej dołączanych do programów bibliotek, jak i często wykorzystywane makra. Listing 1.1 przedstawia zbiór podstawowych nagłówków pochodzących z biblioteczki algorytmicznej mojego zespołu wraz z komentarzami opisującymi ich wykorzystanie. Na listingu 1.2 przedstawione zostały te same nagłówki po usunięciu komentarzy.

Listing 1.1: Nagłówki z komentarzami

01    #include <cstdio>

02    #include <iostream>

03    #include <algorithm>

04    #include <string>

05    #include <vector>

06    using namespace std;

// Dwa z najczęściej używanych typów o długich nazwach - ich skrócenie jest bardzo // istotne

07    typedef vector<int> VI;

08    typedef łong long LL;

// W programach bardzo rzadko można znaleźć w pełni zapisaną instrukcję pętli.

// Zamiast niej, wykorzystywane są trzy następuj ące makra:

// FOR - pętla zwiększająca zmienną z od b do e włącznie

09    #define FOR(x, b, e) for(int x = b; x <= (e); +-|-x)

// FORD - pętla zmniejszająca zmienną x od b do e włącznie

10    #define FORD(x, b, e) for(int x = b; x >= (e); —x)

// REP - pętla zwiększająca zmienną z od 0 do n. Jest ona bardzo // często wykorzystywana do konstruowania i przeglądania struktur danych

11    #define REP(x, n) for(int x = 0; x < (n); +-t-x)

// Makro VAR(v,n) deklaruje nową zmienną o nazwie v oraz typie i wartości // zmiennej n. Jest ono często wykorzystywane podczas operowania na iteratorach // struktur danych z biblioteki STL, których nazwy typów są bardzo długie

12    #define VAR(v, n) _typeof(n) v = (n)

// ALL(c) reprezentuje parę iteratorów wskazujących odpowiednio na pierwszy i // za ostatni element w strukturach danych STL. Makro to jest bardzo przydatne // chociażby w przypadku korzystania z funkcji sort, która jako parametry // przyjmuje parę iteratorów reprezentujących przedział elementów do posortowania.

13    #define ALL(c) (c).begin(), (c).end()

// Poniższe makro służy do wyznaczania rozmiaru struktur danych STL. Używa się go //w programach, zamiast pisać po prostu x.size() z uwagi na fakt, iż wyrażenie // x.size() jest typu unsigned int i w przypadku porównywania z typem // int, w procesie kompilacji generowane jest ostrzeżenie.

14    #define SIZE(x) ((int)(x).size())

// Bardzo pożyteczne makro, służące do iterowania po wszystkich elementach w



Wyszukiwarka

Podobne podstrony:
Programowanie Obiektowew Yisual Basic 4 Dyskietka zawiera 3 kod wszystkich ” zbudowanych w tej książ
Programowanie Obiektowew Yisual Basic 4 Dyskietka zawiera 3 kod wszystkich ” zbudowanych w tej książ
IMGB24 ■Wstęp Autorskie wypowiedzi zamieszczone w tej książce są próbą zabrania głosu w rozmowie ped
Recenzja 409 problemu. Wszystkie uwagi w tej materii są jedynie cytatami z dwóch artykułów J. Stembr
skanuj0064 (60) Wszystkie przepisy zamieszczone w tej książce podane są - jeżeli nie zaznaczono inac
skanuj0064 (60) Wszystkie przepisy zamieszczone w tej książce podane są - jeżeli nie zaznaczono inac
basque Wynik 19 z 31 w tej książce dla zapytania guardia civil ETA - < Poprzednia Następna >
bat 2 Wynik 13 z 30 w tej książce dla zapytania Herri Batasuna ETA - < Poprzednia Następna > -
bat 4 Wynik 13 z 30 w tej książce dla zapytania Herri Batasuna ETA - < Poprzednia Następna > -
POLITECHNIKAGDAŃSKA (Dz.U. z 2014 r. poz. 1370), wszystkie dokumenty są przygotowane w języku obcym,
2 (2617) Materiał i narzędzia Materiał Wszystkie kwiaty omawiane w tej książce wykonano wyłącznie z

więcej podobnych podstron