C++ группа 2 — различия между версиями
| (не показано 9 промежуточных версий этого же участника) | |||
| Строка 1: | Строка 1: | ||
Опейкин Александр | Опейкин Александр | ||
| − | + | ||
| − | + | +7-931-278-21-60 | |
| − | + | ||
| + | [mailto:alexander.opeykin@gmail.com alexander.opeykin@gmail.com] | ||
| + | |||
| + | [https://groups.google.com/d/forum/au2015-cpp-practitice-group2 Группа] | ||
| + | |||
| + | == 5.12.2015 == | ||
| + | Данные [[File:Schemed_read_data.gz]] [[File: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 == | ||
| + | [[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