Здорова господа! Я сейчас читаю книгу «Visual C++ полный курс» автор Айвор Хортон, ну и в общем решил решать задачки, там их не много, примерно по 5 задач после каждой главы, от буду создавать пост и внем выкладывать все решения задач которые я сам делаю. Да задачи эти уже решены и можно скачать на сайте…
Метка: Задачи С++
GDlib работа в С++, visual studio 2010.
Здорова господа! Сегодня рассмотрим библиотеку для обработки изображений GDlib, я ее знаю из php, мне нужно было написать функцию для масштабирования изображений, нужно было проверять их размер и уменьшать. Ну что ж начнем.
Версия hash_map безопасна как и стандартный контейнер.
Напишите версию hash_map (параграф 17.6), которая столь же безопасна, что и стандартный контейнер.
Инварианты для vector.
Определите инварианты для vector (параграф Е.3) с возможностью v==0 и без таковой (параграф Е.3.5).
Оптимизация vector.
Попробуйте оптимизировать vector из параграфа Е.3, пренебрегая возможностью исключений. Например устраните все try-блоки. Сравните производительность с версией из параграфа Е.3 и с реализацией вектор из стандартной библиотеки. Сравните также размер и сложность кода этих вариантов типа vector.
Гарантии безопасности контейнера не стл.
Выберите контейнер из библиотеки, отличной от стандартной. Ознакомьтесь с документацией и выясните, какие гарантии безопасности исключений он предоставляет. Испытайте этот контейнер, чтобы выяснить, насколько он устойчив к исключениям, генерируемым при выделении памяти, а также кодом, предоставляемым пользователем. Сравните с соответствующим контейнером стандартной библиотеки.
uninitialized_fill() справляется с итераторами.
Попробуйте переписать uninitialized_fill() (параграф 19.4.4, Е.3.1) так, что бы он справлялся с итераторами, которые генерируют исключения в операциях — и ++. Возможно ли это? Если да, то какова стоимость такого решения? Если нет, то почему?
unitialized_fill() обработка деструкторов.
Попробуйте переписать unitialized_fill() (параграф 19.4.4, параграф E3.1) так, что бы он справлялся с деструкторами, генерирующими исключения. Возможно ли это? Если да, то какова стоимость такого решения? Если нет, то почему?
Сравнение safe_insert().
Сравните размер, сложность и производительность safe_insert() из упражнений 12 и 13 с версией safe_insert() из параграфа Е.4.2.
safe_insert() добавляет элементы в map.
Напишите safe_insert() (параграф Е.4.2), которая вставляет элементы в существующий map ( а не копирует во временную переменную). Какие ограничения придется наложить на операции?