25 kwietnia 2009
Kategorie: programowanie | Tagi: algorithm, boost, C++, C++0x, code, predicate
komentarze: 0
Boost.bind to potężne narzędzie, za niedługo zobaczymy je w standardzie, obecnie dostępne w TR1. Dzięki niemu możemy pozbyć się wielu prostych i trywialnych, a także tych trochę bardziej skomplikowanych funktorów, jakie musieliśmy definiować, bo standardowe adaptory funkcyjne z STL są ograniczone. To przez niego z kodu źródłowego xime zniknie kilka predykatów, które zostaną zastąpione jedno-dwu [...]
czytaj całość »
23 kwietnia 2009
Kategorie: programowanie | Tagi: algorithm, C++, code, STL
komentarze: 0
Zbiór gotowych algorytmów z standardowej biblioteki języka C++ jest bardzo użyteczny, o tym nie trzeba długo przekonywać. Choć czasem chcąc wykonać kilka rzeczy, bądź kilka kolejnych algorytmów na tych samych danych, możemy stracić na optymalności, szczególnie jak danych jest wiele, a złożoność algorytmu liniowa. Czasem warto napisać coś dedykowanego, lub połączyć 2 algorytmy, oczywiście na [...]
czytaj całość »
1 kwietnia 2009
Kategorie: programowanie | Tagi: algorithm, C++, code, metaprogramowanie, STL
komentarze: 4
Często w programach napisanych w C do pobierania rozmiaru tablic alokowanych przez kompilator na stosie stosuje się prostą konstrukcję z operatorem sizeof, opakowana w makro: #define SizeOfArray(array) sizeof(array) / sizeof(array[0]) W C++ zamiast makra lepiej wykorzystać wzorzec, a wtedy można to przedstawić tak: template<typename T, size_t N> inline size_t SizeOfArray(const T (&)[N]) { return N; [...]
czytaj całość »
26 lutego 2009
Kategorie: programowanie | Tagi: algorithm, C++, code, metaprogramowanie, STL
komentarze: 0
Nic nie jest doskonałe, tak samo STL ma swoje braki i przeoczenia. W standardowej bibliotece języka C++ zabrakło bardzo użytecznego algorytmu – copy_if – kopiowania z predykatem. Prawdopodobnie został on usunięty przez przypadek z dostarczanych przez bibliotekę algorytmów generycznych, ale z tego co się orientuję, można znaleźć o nim wzmianki w drafcie nowego standardu – [...]
czytaj całość »