58#ifndef OR_TOOLS_BASE_STRONG_VECTOR_H_
59#define OR_TOOLS_BASE_STRONG_VECTOR_H_
63#include <initializer_list>
75template <
typename IntType,
typename T,
typename Alloc = std::allocator<T> >
87 typedef typename ParentType::pointer
pointer;
89 typedef typename ParentType::iterator
iterator;
105 std::initializer_list<value_type> il)
108 template <
typename InputIteratorType>
111 : v_(first, last,
a) {}
132 template <
typename InputIt>
136 void assign(std::initializer_list<value_type> ilist) { v_.assign(ilist); }
152 v_.resize(new_size, x);
156 bool empty()
const {
return v_.empty(); }
160 template <
typename... Args>
162 v_.emplace_back(std::forward<Args>(args)...);
164 template <
typename... Args>
166 return v_.emplace(pos, std::forward<Args>(args)...);
181 return v_.erase(first, last);
184 return v_.insert(pos, x);
187 return v_.insert(pos, std::move(x));
190 return v_.insert(pos, n, x);
192 template <
typename IIt>
194 return v_.insert(pos, first, last);
197 return v_.insert(pos, ilist);
201 return x.
get() == y.
get();
204 return x.
get() != y.
get();
213 return x.
get() <= y.
get();
216 return x.
get() >= y.
get();
220 template <
typename H>
222 return H::combine(std::move(h), v.v_);
231 int_type_indexed_vector_must_have_integral_index);
ParentType::size_type size_type
const_reverse_iterator rend() const
friend H AbslHashValue(H h, const StrongVector &v)
friend bool operator!=(const StrongVector &x, const StrongVector &y)
const_reference front() const
ParentType::allocator_type allocator_type
StrongVector(size_type n, const value_type &v, const allocator_type &a=allocator_type())
void assign(size_type n, const value_type &val)
void resize(size_type new_size, const value_type &x)
StrongVector(std::initializer_list< value_type > il)
const_iterator begin() const
iterator erase(const_iterator pos)
reference operator[](IndexType i)
reference at(IndexType i)
const_pointer data() const
ParentType::reverse_iterator reverse_iterator
void assign(InputIt f, InputIt l)
ParentType * mutable_get()
iterator insert(const_iterator pos, const value_type &x)
friend bool operator>=(const StrongVector &x, const StrongVector &y)
void resize(size_type new_size)
friend bool operator==(const StrongVector &x, const StrongVector &y)
void reserve(size_type n)
iterator insert(const_iterator pos, size_type n, const value_type &x)
iterator emplace(const_iterator pos, Args &&... args)
iterator insert(const_iterator pos, std::initializer_list< value_type > ilist)
const_reference back() const
friend bool operator>(const StrongVector &x, const StrongVector &y)
StrongVector(InputIteratorType first, InputIteratorType last, const allocator_type &a=allocator_type())
friend void swap(StrongVector &x, StrongVector &y)
iterator insert(const_iterator pos, IIt first, IIt last)
ParentType::const_reverse_iterator const_reverse_iterator
ParentType::value_type value_type
const_reference at(IndexType i) const
void push_back(value_type &&x)
ParentType::const_reference const_reference
void push_back(const value_type &x)
ParentType::iterator iterator
size_type max_size() const
ParentType::difference_type difference_type
ParentType::const_iterator const_iterator
iterator erase(const_iterator first, const_iterator last)
void swap(StrongVector &x)
void assign(std::initializer_list< value_type > ilist)
ParentType::const_pointer const_pointer
StrongVector(const allocator_type &a)
friend bool operator<=(const StrongVector &x, const StrongVector &y)
void emplace_back(Args &&... args)
const_iterator end() const
reverse_iterator rbegin()
const_reference operator[](IndexType i) const
size_type capacity() const
friend bool operator<(const StrongVector &x, const StrongVector &y)
const_reverse_iterator rbegin() const
const ParentType & get() const
StrongVector(size_type n)
iterator insert(const_iterator pos, value_type &&x)
ParentType::reference reference
std::vector< T, Alloc > ParentType
ParentType::pointer pointer