C++ группа 2 — различия между версиями
(занятие 12.02.2016) |
|||
(не показано 8 промежуточных версий этого же участника) | |||
Строка 24: | Строка 24: | ||
T const& operator[]( size_t i ) const; | T const& operator[]( size_t i ) const; | ||
size_t size() const; | size_t size() const; | ||
− | |||
}; | }; | ||
Строка 41: | Строка 40: | ||
size_t size(); | size_t size(); | ||
}; | }; | ||
+ | |||
+ | == 19.02.2016 == | ||
+ | |||
+ | Реализовать вектор со строгой гарантией исключений для push_back | ||
+ | |||
+ | template <class T> | ||
+ | class Vector | ||
+ | { | ||
+ | public: | ||
+ | operator[]() | ||
+ | push_back() | ||
+ | pop_back() | ||
+ | size() | ||
+ | reserve() | ||
+ | resize() | ||
+ | }; | ||
+ | |||
+ | |||
+ | == 26.02.2016 == | ||
+ | [[File:Template_multimethods.pdf]] | ||
+ | |||
+ | == 04.03.2016 == | ||
+ | |||
+ | == 11.03.2016 == | ||
+ | |||
+ | template <class T> | ||
+ | class deque | ||
+ | { | ||
+ | public: | ||
+ | operator[]() | ||
+ | push_back() | ||
+ | pop_back() | ||
+ | push_front() | ||
+ | pop_fron() | ||
+ | size() | ||
+ | begin() | ||
+ | end() | ||
+ | rbegin() | ||
+ | rend() | ||
+ | }; | ||
+ | |||
+ | push_back и push_front инвалидируют итераторы, но никогда не вызывают конструкторов копирования для '''T''' | ||
+ | |||
+ | Итераторы должны работать со стандартными алгоритмами. Для проверки вызвать std::sort. | ||
+ | |||
+ | '''hint''': std::iterator, std::iterator_traits. | ||
+ | |||
+ | == 18.03.2016 == | ||
+ | |||
+ | Стандартные алгоритмы и функторы. На протяжении всего занятия запрещается использовать for, do, while и goto. | ||
+ | |||
+ | # Посчитать сколько раз во входном файле встречается каждое из слов и вывести статистику в выходной файл (выполнить без лямбд) | ||
+ | # Обрезать пробелы у строки слева и справа | ||
+ | # quick sort | ||
+ | # gather. Собрать все элементы по заданному предикату подряд в какой то точке контейнера | ||
+ | [[File:Gather.png|400px|thumb|center||Gather example]] | ||
+ | |||
+ | '''hints''': for_each, transform, distance, next, find_if, nth_element, istream_iterator, ostream_iterator, stable_partition,rotate | ||
+ | |||
+ | == 25.03.2016 == | ||
+ | |||
+ | Реализовать утилиту, которая по заданому пути рекурсивно выведет структуру каталогов/файлов. | ||
+ | Дополнение: раскрасить директории в синий, исполняемые файлы - в зеленый. | ||
+ | |||
+ | Будем использовать boost-filesystem | ||
+ | |||
+ | Установка | ||
+ | sudo apt-get install libboost-filesystem-dev | ||
+ | |||
+ | Компиляция примеров | ||
+ | g++ main.cpp -lboost_system -lboost_filesystem | ||
+ | |||
+ | референсы | ||
+ | http://www.boost.org/doc/libs/1_60_0/libs/filesystem/doc/tutorial.html | ||
+ | http://www.boost.org/doc/libs/1_60_0/libs/filesystem/doc/reference.html | ||
+ | |||
+ | ключевые слова | ||
+ | path | ||
+ | directory_iterator | ||
+ | is_directory | ||
+ | is_regular_file |
Текущая версия на 10:58, 25 марта 2016
Опейкин Александр
+7-931-278-21-60
Содержание
5.12.2015
Данные Файл:Schemed read data.gz Файл:New data.tgz
12.02.2016
Реализовать 3 класса
1. Массив фиксированного(на этапе компиляции) размера
template <...> class Array { public: Array() {} T & operator[]( size_t i ); T const& operator[]( size_t i ) const; size_t size() const; };
2. Специализацию массива Array для bool. Один bool должен занимать один бит.
3. Стек. Должен уметь работать поверх вашего Array
template <...> class Stack { public: T const& top() const; T & top(); void push(T const& t); void pop(); bool empty(); size_t size(); };
19.02.2016
Реализовать вектор со строгой гарантией исключений для push_back
template <class T> class Vector { public: operator[]() push_back() pop_back() size() reserve() resize() };
26.02.2016
Файл:Template multimethods.pdf
04.03.2016
11.03.2016
template <class T> class deque { public: operator[]() push_back() pop_back() push_front() pop_fron() size() begin() end() rbegin() rend() };
push_back и push_front инвалидируют итераторы, но никогда не вызывают конструкторов копирования для T
Итераторы должны работать со стандартными алгоритмами. Для проверки вызвать std::sort.
hint: std::iterator, std::iterator_traits.
18.03.2016
Стандартные алгоритмы и функторы. На протяжении всего занятия запрещается использовать for, do, while и goto.
- Посчитать сколько раз во входном файле встречается каждое из слов и вывести статистику в выходной файл (выполнить без лямбд)
- Обрезать пробелы у строки слева и справа
- quick sort
- gather. Собрать все элементы по заданному предикату подряд в какой то точке контейнера
hints: for_each, transform, distance, next, find_if, nth_element, istream_iterator, ostream_iterator, stable_partition,rotate
25.03.2016
Реализовать утилиту, которая по заданому пути рекурсивно выведет структуру каталогов/файлов. Дополнение: раскрасить директории в синий, исполняемые файлы - в зеленый.
Будем использовать boost-filesystem
Установка
sudo apt-get install libboost-filesystem-dev
Компиляция примеров
g++ main.cpp -lboost_system -lboost_filesystem
референсы
http://www.boost.org/doc/libs/1_60_0/libs/filesystem/doc/tutorial.html http://www.boost.org/doc/libs/1_60_0/libs/filesystem/doc/reference.html
ключевые слова
path directory_iterator is_directory is_regular_file