Skip to content

CPP-KT/vector-task

Repository files navigation

Vector

В этом задании вам необходимо реализовать простой аналог класса std::vector.

Вектор принимает один шаблонный параметр T — тип хранимых элементов.

Note

std::vector также принимает необязательным вторым шаблонным параметром тип используемого аллокатора, но вам таким заниматься не надо — достаточно использовать операторы new/delete.

В vector.h возле каждого метода, который необходимо реализовать, указаны требуемые гарантии безопасности исключений и вычислительная сложность.

Обратите внимание, что несмотря на то, что стандарт определяет std::vector::shrink_to_fit как "non-binding request" (т.е. допускается реализация, которая ничего не делает), ваша версия этого метода обязана уменьшать capacity, если это имеет смысл.

Деструкторы элементов должны вызываться в порядке, обратном порядку их вставки.

Для обеспечения строгой гарантии безопасности исключений, в зависимости от того, помечен ли move-конструктор T спецификатором noexcept, может потребоваться вместо него вызывать конструктор копирования. Чтобы не копировать лишний раз, предлагается воспользоваться конструкцией if constexpr и оператором noexcept и применять оптимизацию, когда это не противоречит гарантиям метода.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 8