10 #ifndef __NODAMUSHI_BOXVEC_HPP__ 11 #define __NODAMUSHI_BOXVEC_HPP__ 18 # include <functional> 27 template<
typename T,
typename ITR>
53 const T&
operator->()const noexcept{
return (*itr).operator->();}
74 template<
typename T,
typename PTR=::nodamushi::box<T>>
93 _v.reserve(initial_capacity);
101 _v.reserve(src.size());
103 _v.emplace_back(
new T(t));
109 _v.reserve(src.
size());
111 _v.emplace_back(
new T(t));
124 _v.reserved(src.
size()+_v.size());
125 for(
const auto& t:src)
126 _v.emplace_back(
new T(t));
131 _v.reserved(src.size()+_v.size());
132 for(
const auto& t:src._v)
133 _v.emplace_back(std::move(t));
135 operator bool()const noexcept{
return !_v.empty();}
140 bool empty()const noexcept{
return _v.empty();}
159 template <
class InputIterator>
160 void assign(InputIterator first, InputIterator last)
163 _v.emplace_back(
new T(*first));
170 _v.emplace_back(
new T(t));
174 _v.emplace_back(
new T(std::move(t)));
178 _v.emplace_back(std::move(t));
186 template<
typename... ARGS>
189 _v.emplace_back(
new T(std::forward<ARGS>(args)...));
191 template <
class... ARGS>
194 return {_v.emplace(position.
itr,
new T(std::forward<ARGS>(args)...))};
201 _v.insert(position.
itr,
box(
new T(x)));
205 _v.insert(position.
itr,
box(
new T(x)));
210 _v.insert(position.
itr,
box(
new T(std::move(x))));
212 template <
class InputIterator>
214 InputIterator first, InputIterator last)
216 auto i = position.
itr;
217 while(first != last){
218 _v.insert(i,
box(
new T(*first)));
243 typename vec_t::iterator
ptr_begin()noexcept{
return _v.begin();}
244 typename vec_t::const_iterator
ptr_begin()const noexcept{
return _v.begin();}
245 typename vec_t::iterator
ptr_end() noexcept{
return _v.end();}
246 typename vec_t::const_iterator
ptr_end()const noexcept{
return _v.cend();}
256 void sort(std::function<
bool(
const T&,
const T&)> comp)
258 std::sort(_v.begin(),_v.end(),
259 [&comp](
const box& a,
const box& b)->
bool{
265 template<
bool Compare(const T&,const T&)>
268 std::sort(_v.begin(),_v.end(),
269 [](
const box& a,
const box& b)->
bool{
270 return Compare(*a,*b);
281 #endif // __NODAMUSHI_BOXVEC_HPP__
void add_all(boxvec< T, P > &&src)
void assign(InputIterator first, InputIterator last)
reference operator[](size_type n)
boxvec(boxvec< T, P > &&src)
void push_back(const box &t)
bool operator==(const boxitr< T, ITR > &i) const noexcept
boxitr< T, ITR > & operator+=(int n)
const_iterator cbegin() const noexcept
iterator insert(iterator position, InputIterator first, InputIterator last)
vec_t::iterator ptr_begin() noexcept
vec_t::const_iterator ptr_begin() const noexcept
iterator insert(iterator position, const T &x)
iterator insert(const_iterator position, const T &x)
const_reference operator[](size_type n) const
const_reference front() const
size_type size() const noexcept
reverse_iterator rend() noexcept
bool operator<(const boxitr< T, ITR > &i) const noexcept
const_reverse_iterator rend() const noexcept
const PTR ptr_at(size_type n) const
box.std::unique_ptr wrapper
iterator begin() noexcept
T & operator->() noexcept
const_reverse_iterator crend() const noexcept
const_iterator end() const noexcept
iterator erase(const_iterator first, const_iterator last)
iterator emplace(const_iterator position, ARGS &&... args)
bool empty() const noexcept
iterator insert(const_iterator position, T &&x)
const_reverse_iterator crbegin() const noexcept
typename vec_t::size_type size_type
boxvec(const boxvec< T, PTR > &src)
deap copy
boxitr< T, ITR > & operator -=(int n)
void swap(boxvec< T, PTR > &x)
std::vector< ::nodamushi::box< nodamushi::svd::normalized::Enumeration > > vec_t
iterator erase(const_iterator position)
boxitr< T, ITR > & operator++()
const_reference back() const
boxvec< T, PTR > & operator=(boxvec< T, P > &&src)
size_type capacity() const noexcept
boxvec< T, PTR > & operator=(const boxvec< T, PTR > &src)
deap copy
boxitr< T, ITR > operator+(int n) const
void reserve(size_type n)
void push_back(const T &t)
const_iterator cend() const noexcept
reference at(size_type n)
const_reference at(size_type n) const
iterator erase(iterator position)
T & operator *() noexcept
bool operator !=(const boxitr< T, ITR > &i) const noexcept
reverse_iterator rbegin() noexcept
vec_t::iterator ptr_end() noexcept
boxitr< T, ITR > operator -(int n) const
const T & operator->() const noexcept
boxitr< T, ITR > operator --(int)
void sort(std::function< bool(const T &, const T &)> comp)
sort elements
bool operator<=(const boxitr< T, ITR > &i) const noexcept
vec_t::const_iterator ptr_end() const noexcept
const_reverse_iterator rbegin() const noexcept
boxvec(size_type initial_capacity)
bool operator >=(const boxitr< T, ITR > &i) const noexcept
size_type max_size() const noexcept
bool operator >(const boxitr< T, ITR > &i) const noexcept
boxitr< T, ITR > & operator --()
const_iterator begin() const noexcept
iterator erase(iterator first, iterator last)
void add_all(const boxvec< T, P > &src)
normalized <enumeratedValues> element. iterable
void emplace_back(ARGS &&... args)