B0 — различия между версиями
(→Весенний Семестр) |
(→#5 Exceptions Guarantees) |
||
Строка 59: | Строка 59: | ||
== #5 Exceptions Guarantees == | == #5 Exceptions Guarantees == | ||
+ | |||
+ | Reconsider your own `vector` implementation towards making it ''[http://en.wikipedia.org/wiki/Exception_safety exception-safe]''. | ||
+ | |||
+ | Following members of your `vector` implementation should be reconsidered to match corresponding ''[http://en.wikipedia.org/wiki/Exception_safety exception-safety guarantees]'': | ||
+ | |||
+ | * '''operator=''' / strong | ||
+ | * '''push_back''' / strong | ||
+ | |||
+ | |||
+ | ==== Extra ==== | ||
+ | |||
+ | Try match your implementation on the functions predefined inside STL. | ||
+ | |||
+ | Try to reduce boilerplate inside your implementation relying on the standard-library defined functions. | ||
+ | |||
+ | ''Hint'': see [http://en.cppreference.com/w/cpp/header/memory memory] header closely. |
Версия 00:20, 29 марта 2015
Содержание
Осенний Семестр
TBD
Весенний Семестр
#2 Vector
Part One
Implement vector-alike container matching performance requirements of the `std::vector`.
It should contain implementation for the following methods matching behaviour of the ones of `std::vector`:
- push_back
- pop_back
- insert
- clear
- resize
- back
- size
- begin/rbegin
- end/rend
As a reference consider en.cppreference.com.
Part Two
Implement specialization of already implemented (template-) container for the simple type `bool` being as compact as possible.
#3 Throwing Vector
Now you've got an insight what the C++ exceptions are, implement all error handling inside your implementation of the `vector`, relying solely upon the exceptions mechanism.
That means: no more `_Exit`s, `abort`s, etc. Exceptions only.
#4 Deque
Implement double-ended queue matching interface of thereof inside STL (std::deque) and matching its performance requirements.
At the very least, it should contain following members:
- push_back
- pop_back
- push_front
- pop_front
- insert
- clear
- resize
- back
- front
- size
- begin/rbegin
- end/rend
NB: Implementing deque matching performance requirements of the STL one, try to minimize unused memory 'committed' by your implementation.
If you consider that it's impossible, be ready to assure your point.
#5 Exceptions Guarantees
Reconsider your own `vector` implementation towards making it exception-safe.
Following members of your `vector` implementation should be reconsidered to match corresponding exception-safety guarantees:
- operator= / strong
- push_back / strong
Extra
Try match your implementation on the functions predefined inside STL.
Try to reduce boilerplate inside your implementation relying on the standard-library defined functions.
Hint: see memory header closely.