-
Notifications
You must be signed in to change notification settings - Fork 0
/
subject.txt
64 lines (57 loc) · 9.37 KB
/
subject.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Глава 1
Общие правила
• Любые функции реализованные в хэдере (за исключением случаев с шаблонами) и любые незащищенные хэдеры, означает 0 для задания.
• Навязанные имена файлов должны следовать до последней буквы, а также имена классов, имена функций и имена методов.
• Запомните. Вы кодите на С++ сейчас, больше не на С. Следовательно:
◦ следующие функции ЗАПРЕЩЕНЫ, и их использование будет расцениваться как 0, никаких вопросов не спрашивать: *alloc,*printf and free
◦ Вам разрешено использовать в основном все из стандартной библиотеки. ОДНАКО, было бы разумно попробовать использовать версии C++ функций, к которым вы привыкли в C, вместо того, чтобы просто придерживаться того, что вы знаете, это новый язык, в конце концов.
◦ Поскольку ваша цель здесь-перекодировать библиотеку STL, вы, конечно, не можете использовать сами контейнеры.
• На самом деле, использование любой явно запрещенной функции или механики будет наказываться 0, никаких вопросов не спрашивать.
• Также обратите внимание, что если не указано иное, С++ ключевое слово "using namespace" и "friend" запрещены. Их использование расценивается как -42, никаких вопросов не спрашивать.
• Файлы, связанные с классом, всегда будут ClassName.hpp и ClassName.cpp, если не указано иное.
• Вы должны внимательно прочитать примеры. Они могут содержать требования, которые не являются очевидными в описании упражнения. Если что-то кажется двусмысленным, вы недостаточно хорошо понимаете c++.
• Поскольку вам разрешено использовать инструменты C++, о которых вы узнали с самого начала, вы не можете использовать какую-либо внешнюю библиотеку. И прежде чем вы спросите, это также означает, что нет C++11 и производные, ни Boost или что-нибудь такое, что ваш потрясающе опытный друг сказал вам, что C++ не может существовать без него.
• От вас может потребоваться сдать значительное количество классов. Это может показаться утомительным, если вы не можете написать сценарий своего любимого текстового редактора.
• Прочитайте каждый проект ПОЛНОСТЬЮ до того как начать! Реально, сделайте это.
• The compiler to use is clang++.
• Your code has to be compiled with the following flags: -Wall -Wextra -Werror.
• Каждый из ваших подключений должен быть в состоянии быть подключен независимо от других. Инклюды должны содержать каждый другой инклюд в зависимости от очевидного.
• На случай, если вам интересно, никакой стиль кодирования не применяется во время работы в C++. Вы можете использовать любой стиль, который вам нравится, без каких-либо ограничений. Но помните, что код, который ваш коллега-оценщик не может прочитать, - это код, который он или она не может оценить.
• Важные вещи сейчас: Вы не будете оцениваться программой. Поэтому вам предоставляется определенная свобода в том, как вы решите выполнять упражнения.Тем не менее, помните об ограничениях каждого упражнения, и не ленитесь, вы бы упустили многое из того, что они могут предложить!
• Это не проблема иметь некоторые посторонние файлы в том, что вы включаете, вы можете выбрать, чтобы разделить ваш код в большем количестве файлов, чем то, что от вас требуется. Не стесняйтесь, пока результат не оценивается программой.
• Даже если тема упражнения коротка, стоит потратить на нее некоторое время, чтобы быть абсолютно уверенным, что вы понимаете, чего от вас ждут, и что вы сделали это наилучшим образом.
• By Odin, by Thor! Use your brain!!!
____________________________________________________________________________________________________________________________________
Глава 2
Цели
В этом проекте вы будете реализовывать различные типы контейнеров на С++ из STL.
Для каждого контейнера, включите файлы классов с соответствующими именами.
Имя пространство будет всегда "ft" и ваш контейнер должен быть протестировать с использованием ft::<container>.
Вы должны уважать структуру эталонного контейнера. Если в нем отсутствует какая-то часть формы coplien, не реализуйте его.
Напомним, что мы пишем код на C++98, поэтому любая новая функция контейнеров не должна быть реализована, но ожидается каждая старая функция (даже устаревшая).
____________________________________________________________________________________________________________________________________
Глава 3
Обязательная часть
• Реализуйте следующие контейнеры и включите необходимые файлы<container>.hpp
• Вы также должны предоставить main.cpp который проверяет все для ваших оценок.
• Функция-член get_allocator здесь не ожидается, остальные функции-члены есть. Ожидаются также перегрузки, не являющиеся членами организации.
• Если контейнер имеет итераторную систему, вы должны переопределить ее.
• Вы можете использовать https://www.cplusplus.com/ как ссылка на то, что нужно реализовать.
• Вы не можете реализовать больше публичных функций, чем те, которые предлагаются в стандартных контейнерах. Все остальное должно быть частным или защищенным. Каждая публичная функция/-переменная должна быть обоснована.
• Для перегрузок, не являющихся членами группы, допускается ключевое слово friend. Каждое использование друга должно быть обосновано и проверено в ходе оценки.
Вы должны включить следующие контейнеры и связанные с ними функции:
• List
• Vector
• Map
• Stack
• Queue
Конечно, STL запрещен. Однако вам разрешено использовать библиотеку STD.
____________________________________________________________________________________________________________________________________
Глава 4
Бонусная часть
Если вы полностью закончили обязательную часть, то можете попробовать и сдать бонусы.
В качестве бонуса вы можете включить следующие контейнеры и связанные с ними функции:
• Deque
• Set
• Multiset
• Multimap