sobota, 7 kwietnia 2012

Standard C++11: pętla for oparta na zakresie

Od kilku miesięcy znamy nowy standard języka C++, noszący nieoficjalną nazwę C++11. Najpopularniejsze kompilatory stopniowo dostosowują się do nowego standardu. Warto wiedzieć co nowego zostało dodane do języka, gdyż niektóre rzeczy na pewno ułatwią i przyspieszą pisanie kodu. Będę starał się w miarę regularnie przybliżać funkcjonalności, które działają już w najnowszych wersjach wielu kompilatorów. Na początek: pętla for oparta na zakresie.

sobota, 3 marca 2012

"Legacy code" a możliwości C++

Być może niektórzy czytelnicy mojego bloga nieco "przestraszyli się" poprzednimi wpisami. Dzisiaj będzie coś łatwiejszego i mam nadzieję, że wiele osób będzie mogło wykorzystać w swoich projektach informacje zawarte w niniejszym wpisie już dziś.

W większych projektach bardzo często sięga się do bibliotek stworzonych przez osoby postronne. Ma to wiele zalet: oszczędzamy w ten sposób czas, spodziewamy się, że funkcjonalność zawarta w bibliotece jest napisana poprawnie, a wykorzystane algorytmy są optymalne itp. Jednakże często bywa, że znajdujemy świetnie nadającą się do naszego projektu bibliotekę, ale napisaną np. w języku C. Przykładowo funkcje tej biblioteki alokują pamięć na stercie, a dołączona dokumentacja informuje nas, że to my (jako użytkownicy biblioteki) powinniśmy pamiętać o jej zwolnieniu (za pomocą odpowiednich funkcji wchodzących w skład biblioteki). Dodatkowo używane funkcje mogą zakończyć się niepowodzeniem, co powinniśmy wykrywać za pomocą zwracanych przez nie wartości, bądź pilnować jakiejś globalnej flagi. Krótko mówiąc: typowa biblioteka napisana w języku C. A my lubimy C++... ;)

Zaprezentuję dziś na przykładzie, jak można radzić sobie przypadkami takimi jak opisany powyżej. Zapraszam do lektury.

piątek, 6 stycznia 2012

Metaprogramowanie - implementacja dużych liczb całkowitych (część 3)

Wtam po nieco dłuższej przerwie.

Powracamy do tematu metaprogrogramowania, a konkretnie do biblioteki manipulującej dużymi liczbami całkowitymi. Dziś ostatnia część - policzymy silnię liczby 100. Do obliczenia wyniku rozszerzymy naszą bibliotekę BigInteger, która potrafi już dodawać i mnożyć dowolnie duże liczby.