Многопоточное программирование (Лекция 1). Стандарты C++, контейнеры C++, красно-черные деревья, B-деревья
Содержание
- 2. Литература Джеф Элджер. С++: Библиотека пограммиста Jeff Alger. C++ for Real Programmers
- 3. Стандарты C++ C++98/C++03 Boost C++11 C++14
- 4. Контейнеры C++ STL STL (C++11) Boost
- 5. Контейнеры STL Последовательные контейнеры Ассоциативные контейнеры Контейнеры-адаптеры Псевдоконтейнеры
- 6. Контейнеры STL Последовательные контейнеры Ассоциативные контейнеры Контейнеры-адаптеры Псевдоконтейнеры
- 7. Последовательные контейнеры STL std::vector std::list std::deque
- 8. Ассоциативные контейнеры STL std::set std::map std::multiset std::multimap
- 9. Красно-черные деревья
- 10. Красно-черные деревья
- 11. Красно-черные деревья http://www.youtube.com/v/vDHFF4wjWYU
- 12. B-деревья https://code.google.com/p/cpp-btree/
- 13. B-деревья btree_set btree_map btree_multiset btree_multimap
- 14. Контейнеры-адаптеры STL std::stack std::queue std::priority_queue
- 15. Псевдоконтейнеры STL std::bitset std::basic_string std::valarray
- 16. Последовательные контейнеры STL (C++11) std::array std::forward_list
- 17. std::array vs. std::vector std::vector хранит все элементы в куче std::array хранит все элементы в себе std::array
- 18. std::forward_list Итератор может двигаться только в одном направлении. #include #include int main () { std::forward_list mylist
- 19. Хэш-таблицы STL (C++11) std::unordered_set std::unordered_map std::unordered_multiset std::unordered_multimap
- 20. Хэш-таблицы STL (C++11)
- 21. Хэш-таблицы STL (C++11)
- 22. boost::circular_buffer
- 23. boost::circular_buffer_space_optimized
- 24. Умные указатели
- 25. Умные указатели Пример «самодельного» умного указателя. class PFoo { private: Foo* foo; public: PFoo() : foo(NULL)
- 26. Умные указатели Пример «самодельного» умного указателя. template class SP { private: Type* pointer; public: SP() :
- 27. std::auto_ptr (C++03)
- 28. std::auto_ptr (C++03) Не использовать!
- 29. std::auto_ptr (C++03) #include int func() { std::auto_ptr PFoo1(new CFoo()); std::auto_ptr PFoo2; PFoo2 = PFoo1; } Пример
- 30. std::unique_ptr (C++11) Невозможность скопировать std::unique_ptr #include int func() { std::unique_ptr PFoo1(new CFoo()); std::unique_ptr PFoo2; PFoo2 =
- 31. std::unique_ptr (C++11) Перемещение std::unique_ptr #include int func() { std::unique_ptr PFoo1(new CFoo()); std::unique_ptr PFoo2; PFoo2 = std::move(PFoo1);
- 32. std::shared_ptr (C++11) Пример использования std::shared_ptr #include int func() { std::shared_ptr PFoo1(new CFoo()); std::shared_ptr PFoo2; PFoo2 =
- 33. std::shared_ptr (C++11)
- 34. std::shared_ptr (C++11)
- 35. std::weak_ptr (C++11)
- 36. Аллокаторы
- 37. Аллокаторы
- 38. Аллокаторы
- 39. Аллокаторы
- 40. Аллокаторы
- 41. Аллокаторы
- 42. Аллокаторы
- 43. Аллокаторы
- 44. Аллокаторы
- 45. Аллокаторы
- 46. Аллокаторы
- 47. Аллокаторы
- 48. Аллокаторы malloc/calloc/realloc/free new/delete new[]/delete[]
- 49. Аллокаторы ccmalloc dmalloc tcmalloc
- 50. ccmalloc Делаем утечки. void Leak(char *inStr) { char *str = (char *) malloc(strlen(inStr)); memcpy(str, inStr, strlen(inStr));
- 51. ccmalloc Функция main с утечками. int main() { char *str; Leak("This leaks 19 bytes"); str =
- 52. ccmalloc Результат ccmalloc (1). * 61.3% = 19 Bytes of garbage allocated in 1 allocation |
- 53. ccmalloc Результат ccmalloc (2). | * 38.7% = 12 Bytes of garbage allocated in 1 allocation
- 54. dmalloc Результат dmalloc. not freed: '0x45008' (12 bytes) from 'ra=0x1f8f4' not freed: '0x45028' (12 bytes) from
- 55. tcmalloc Работает быстрее, чем malloc из glibc LD_PRELOAD="/usr/lib/libtcmalloc.so"
- 56. Уплотнение памяти
- 57. Уплотнение памяти
- 58. Уплотнение памяти
- 59. Уплотнение памяти
- 60. Алгоритм Бейкера
- 61. Уплотнение на месте
- 62. Разобраться самостоятельно git make
- 64. Скачать презентацию