Vector#

Source file#

ChaiGO container/sequence/vector

Interface#

template<ContainerElement T>
class Vector#

A dynamic array container.

A Vector is a sequence container that supports: (amortized) constant time insert and erase operations at the end; insert and erase in the middle take linear time. Storage management is handled automatically, though hints can be given to improve efficiency.

Difference

  • Allocator is not required as template parameter.

  • vector<bool> is a vector of boolean values and not a bit vector.

  • The storage expansion policy is implementation defined.

模板参数

T – Type of the elements stored in the vector.

Public Types

using value_type = T#
using allocator_type = allocator<T>#
using allocator_traits = std::allocator_traits<allocator_type>#
using pointer = typename allocator_traits::pointer#
using const_pointer = typename allocator_traits::const_pointer#
using reference = value_type&#
using const_reference = const value_type&#
using size_type = std::size_t#
using difference_type = std::ptrdiff_t#
using iterator = VectorIterator<T, T*, T&>#
using const_iterator = VectorIterator<T, const T*, const T&>#
using reverse_iterator = std::reverse_iterator<iterator>#
using const_reverse_iterator = std::reverse_iterator<const_iterator>#

Public Functions

constexpr Vector() noexcept#
explicit constexpr Vector(size_type count, const T &value = T())#
template<std::input_iterator InputIt>
constexpr Vector(InputIt first, InputIt last)#
constexpr Vector(const Vector &other)#
constexpr Vector(Vector &&other) noexcept#
constexpr Vector(std::initializer_list<T> ilist)#
~Vector()#
constexpr Vector &operator=(const Vector &other)#
constexpr Vector &operator=(Vector &&other) noexcept(allocator_traits::propagate_on_container_move_assignment::value || allocator_traits::is_always_equal::value)#
constexpr Vector &operator=(std::initializer_list<T> ilist)#
template<std::input_iterator InputIt>
constexpr void assign(InputIt first, InputIt last)#
constexpr void assign(size_type count, const T &value)#
constexpr void assign(std::initializer_list<T> ilist)#
constexpr allocator_type get_allocator() const noexcept#
constexpr iterator begin() noexcept#
constexpr iterator end() noexcept#
constexpr const_iterator begin() const noexcept#
constexpr const_iterator end() const noexcept#
constexpr const_iterator cbegin() const noexcept#
constexpr const_iterator cend() const noexcept#
constexpr reverse_iterator rbegin() noexcept#
constexpr reverse_iterator rend() noexcept#
constexpr const_reverse_iterator rbegin() const noexcept#
constexpr const_reverse_iterator rend() const noexcept#
constexpr const_reverse_iterator crbegin() const noexcept#
constexpr const_reverse_iterator crend() const noexcept#
constexpr bool empty() const noexcept#
constexpr size_type size() const noexcept#
constexpr size_type max_size() const noexcept#
constexpr size_type capacity() const noexcept#
constexpr void resize(size_type count)#
constexpr void resize(size_type count, const T &value)#
constexpr void reserve(size_type new_capacity)#
constexpr void shrink_to_fit()#
constexpr reference operator[](size_type pos)#
constexpr const_reference operator[](size_type pos) const#
constexpr const_reference at(size_type pos) const#
constexpr reference at(size_type pos)#
constexpr reference front()#
constexpr const_reference front() const#
constexpr reference back()#
constexpr const_reference back() const#
constexpr T *data() noexcept#
constexpr const T *data() const noexcept#
template<class ...Args>
constexpr reference emplace_back(Args&&... args)#
constexpr void push_back(const T &value)#
constexpr void push_back(T &&rvalue)#
constexpr void pop_back()#
template<class ...Args>
constexpr iterator emplace(const_iterator position, Args&&... args)#
constexpr iterator insert(const_iterator pos, const T &value)#
constexpr iterator insert(const_iterator pos, T &&rvalue)#
constexpr iterator insert(const_iterator pos, size_type count, const T &value)#
template<std::input_iterator InputIt>
constexpr iterator insert(const_iterator pos, InputIt first, InputIt last)#
constexpr iterator insert(const_iterator pos, std::initializer_list<T> ilist)#
constexpr iterator erase(const_iterator pos)#
constexpr iterator erase(const_iterator first, const_iterator last)#
constexpr void swap(Vector &other) noexcept(allocator_traits::propagate_on_container_swap::value || allocator_traits::is_always_equal::value)#
constexpr void clear() noexcept#