44template <
class T,
class Alloc = std::allocator < T > >
45class vector :
public std::vector < T, Alloc > {
50 using std::vector< T, Alloc >::vector;
55 using std::vector< T, Alloc >::operator =;
61 using iterator =
typename std::vector < T, Alloc >::iterator;
115 template <
class Iterator >
146 return make_move_iterator ( this->
begin ( ) );
176 return make_move_iterator ( this->
end ( ) );
186 auto endIter =
end ( );
187 auto beginIter =
begin ( );
198 auto endIter =
end ( );
199 auto beginIter =
begin ( );
210 auto endIter = std::move ( * this ).end ( );
211 auto beginIter = std::move ( * this ).begin ( );
218 using std::vector < T, Alloc >::insert;
271 template <
class InputIt >
292 using std::vector < T, Alloc >::emplace;
305 template <
class ... Args >
313 using std::vector < T, Alloc >::erase;
404template<
class T ,
class ... Ts >
409 for(
const T& item :
vector) {
410 if(!first) out <<
", ";
443template <
class ... Ts >
462 A.resize (
std::max ( A.size ( ), B.size ( ) ),
false );
467 for ( ; itB < B.
end ( ); ++ itB, ++ itA )
468 * itA = * itA | * itB;
484template <
class ... Ts >
501template <
class ... Ts >
527 for ( ; itB < B.
end ( ) && itA < A.
end ( ); ++ itB, ++ itA )
528 * itA = * itA & * itB;
530 for ( ; itA < A.
end ( ); ++ itA )
547template <
class ... Ts >
564template <
class ... Ts >
587 A.resize (
std::max ( A.size ( ), B.size ( ) ),
false );
592 for ( ; itB < B.
end ( ); ++ itB, ++ itA )
593 * itA = * itA ^ * itB;
609template <
class ... Ts >
625template <
class ... Ts >
642template <
class ... Ts >
684 if ( dist > A.size ( ) ) {
687 typename ext::vector < bool, Ts ... >::reverse_iterator itASource = A.rbegin ( ) + dist;
688 typename ext::vector < bool, Ts ... >::reverse_iterator itADest = A.rbegin ( );
690 for ( ; itASource < A.rend ( ); ++ itASource, ++ itADest )
691 * itADest = * itASource;
693 for ( ; itADest < A.rend ( ); ++ itADest )
711template <
class ... Ts >
728template <
class ... Ts >
774 if ( dist > A.size ( ) ) {
777 typename ext::vector < bool, Ts ... >::iterator itASource = A.
begin ( ) + dist;
780 for ( ; itASource < A.
end ( ); ++ itASource, ++ itADest )
781 * itADest = * itASource;
783 for ( ; itADest < A.
end ( ); ++ itADest )
801template <
class ... Ts >
819template <
class ... Ts >
834 for ( ; itV != v.
end ( ); ++ itV )
851template <
class ... Ts >
861 for ( ; itV != v.
end ( ); ++ itV )
875template <
class ... Ts >
885 for ( ; itV != v.
end ( ); ++ itV )
Implementation of iterator_range, i.e. pair of iterators. The class provides most notably begin and e...
Definition: range.hpp:24
Class extending the vector class from the standard library. Original reason is to allow printing of t...
Definition: vector.hpp:45
vector(const vector &other)=default
reverse_iterator insert(const_reverse_iterator pos, InputIt first, InputIt last)
Inserts the values from the given range to positions starting at given iterator pos.
Definition: vector.hpp:272
auto range() const &
Make range of non-const begin to end iterators.
Definition: vector.hpp:197
auto end() &&
Inherited behavior of end for rvalues.
Definition: vector.hpp:175
typename std::vector< T, Alloc >::reverse_iterator reverse_iterator
The type of reverse values iterator.
Definition: vector.hpp:73
auto range() &&
Make range of move begin to end iterators.
Definition: vector.hpp:209
auto begin() &
Inherited behavior of begin for non-const instance.
Definition: vector.hpp:125
iterator erase(iterator pos)
Removes element from the container at position given by parameter pos.
Definition: vector.hpp:323
reverse_iterator erase(const_reverse_iterator first, const_reverse_iterator last)
Removes elements from the container in range given parameters first and last.
Definition: vector.hpp:386
typename std::vector< T, Alloc >::iterator iterator
The type of values iterator.
Definition: vector.hpp:61
reverse_iterator erase(reverse_iterator pos)
Removes element from the container at position given by parameter pos.
Definition: vector.hpp:335
vector & operator=(vector &&other)=default
reverse_iterator insert(const_reverse_iterator pos, T &&value)
Inserts the value on position given by iterator pos.
Definition: vector.hpp:242
iterator erase(iterator first, iterator last)
Removes elements from the container in range given parameters first and last.
Definition: vector.hpp:360
reverse_iterator erase(const_reverse_iterator pos)
Removes element from the container at position given by parameter pos.
Definition: vector.hpp:347
auto begin() const &
Inherited behavior of begin for const instance.
Definition: vector.hpp:135
typename std::vector< T, Alloc >::const_iterator const_iterator
The type of constant values iterator.
Definition: vector.hpp:67
reverse_iterator insert(const_reverse_iterator pos, const T &value)
Inserts the value on position given by iterator pos.
Definition: vector.hpp:229
reverse_iterator insert(const_reverse_iterator pos, std::initializer_list< T > ilist)
Inserts the values from the given initializer list to positions starting at given iterator pos.
Definition: vector.hpp:285
auto end() &
Inherited behavior of end for non-const instance.
Definition: vector.hpp:155
auto begin() &&
Inherited behavior of begin for rvalues.
Definition: vector.hpp:145
reverse_iterator emplace(const_reverse_iterator pos, Args &&... args)
Inserts a new value to the container at position given by parameter pos. The new value is constructed...
Definition: vector.hpp:306
vector(const ext::iterator_range< Iterator > &range)
Definition: vector.hpp:116
vector(vector &&other)=default
auto end() const &
Inherited behavior of end for const instance.
Definition: vector.hpp:165
typename std::vector< T, Alloc >::const_reverse_iterator const_reverse_iterator
The type of constant reverse values iterator.
Definition: vector.hpp:79
auto range() &
Make range of non-const begin to end iterators.
Definition: vector.hpp:185
reverse_iterator insert(const_reverse_iterator pos, size_t count, const T &value)
Inserts the count copies of value on position given by iterator pos.
Definition: vector.hpp:256
reverse_iterator erase(reverse_iterator first, reverse_iterator last)
Removes elements from the container in range given parameters first and last.
Definition: vector.hpp:373
Definition: sigHandler.cpp:20
ext::vector< bool, Ts ... > & operator^=(ext::vector< bool, Ts ... > &A, const ext::vector< bool, Ts ... > &B)
Support for assigning xor operator.
Definition: vector.hpp:565
ext::vector< bool, Ts ... > & operator>>=(ext::vector< bool, Ts ... > &A, size_t dist)
Support for assigning bit shift to the right operator. The operator is intended to look at the vector...
Definition: vector.hpp:729
ext::vector< bool, Ts ... > operator|(ext::vector< bool, Ts ... > A, const ext::vector< bool, Ts ... > &B)
Support for or operator.
Definition: vector.hpp:485
constexpr const T & max(const T &a)
Root case of maximum computation. The maximum from one value is the value itself.
Definition: algorithm.hpp:278
ext::vector< bool, Ts ... > & operator|=(ext::vector< bool, Ts ... > &A, const ext::vector< bool, Ts ... > &B)
Support for assigning or operator.
Definition: vector.hpp:444
void clear(ext::vector< bool, Ts ... > &v)
Clears all bits in the vector of booleans.
Definition: vector.hpp:876
ext::vector< bool, Ts ... > & operator<<=(ext::vector< bool, Ts ... > &A, size_t dist)
Support for assigning bit shift to the left operator. The operator is intended to look at the vector ...
Definition: vector.hpp:643
ext::vector< bool, Ts ... > operator^(ext::vector< bool, Ts ... > A, const ext::vector< bool, Ts ... > &B)
Support for xor operator.
Definition: vector.hpp:610
ext::vector< bool, Ts ... > operator~(ext::vector< bool, Ts ... > A)
Support for not operator.
Definition: vector.hpp:626
void fill(ext::vector< bool, Ts ... > &v)
Sets all bits in the vector of booleans.
Definition: vector.hpp:852
ext::vector< bool, Ts ... > operator&(ext::vector< bool, Ts ... > A, const ext::vector< bool, Ts ... > &B)
Support for and operator.
Definition: vector.hpp:548
std::ostream & operator<<(ext::reference_wrapper< std::ostream > &os, std::ostream &(*const func)(std::ostream &))
Overloaded function allowing same operations on wrapped output stream as on the actual output stream,...
Definition: GlobalData.cpp:33
bool any(const ext::vector< bool, Ts ... > &v)
Tests the vector of booleans whether at least one bit inside is set.
Definition: vector.hpp:820
std::istream & operator>>(ext::reference_wrapper< std::istream > &is, std::istream &(*const func)(std::istream &))
Overloaded function allowing same operations on wrapped input stream as on the actual input stream,...
Definition: GlobalData.cpp:53
ext::vector< bool, Ts ... > & operator&=(ext::vector< bool, Ts ... > &A, const ext::vector< bool, Ts ... > &B)
Support for assigning and operator.
Definition: vector.hpp:502
auto begin(Container &&cont) -> decltype(std::forward(cont).begin())
Definition: iterator.hpp:900
void end()
Definition: measurements.cpp:19