50 #ifndef VIRTUAL_CONTAINER_H_
51 #define VIRTUAL_CONTAINER_H_
53 #include "../general/util.h"
57 template<
typename V,
typename ARRAY>
60 typedef std::iterator<std::forward_iterator_tag,V>
iterator;
65 typedef typename iterator::pointer
pointer;
68 index_iterator( ARRAY& array, std::size_t index=0 ): array_(array), index_(index) {}
96 template <
typename TYPE,
typename CONFIG>
99 using elem_type = std::pair<typename CONFIG::point_type,TYPE>;
108 for(
size_t i = 0 ; i < pred.size() ; i++ )
if (pred[i])
map_.push_back(i);
118 if ( i >=
map_.size() )
typename CONFIG::EXCEPTION(std::out_of_range(
"MUI Error [virtual_container.h]: Out of range."));
141 template <
typename TYPE,
typename CONFIG>
143 const std::vector<size_t> &map )
148 template <
typename TYPE,
typename CONFIG>
150 const std::vector<bool> &pred )
Definition: virtual_container.h:97
virtual_container(const container_type &container, const std::vector< bool > &pred)
Definition: virtual_container.h:106
iterator begin() const
Definition: virtual_container.h:122
std::vector< elem_type > container_type
Definition: virtual_container.h:100
std::pair< typename CONFIG::point_type, TYPE > elem_type
Definition: virtual_container.h:99
iterator end() const
Definition: virtual_container.h:128
const elem_type & at(size_t i) const
Definition: virtual_container.h:117
const elem_type & operator[](size_t i) const
Definition: virtual_container.h:112
iterator cend() const
Definition: virtual_container.h:132
iterator cbegin() const
Definition: virtual_container.h:126
index_iterator< const elem_type, const virtual_container > iterator
Definition: virtual_container.h:101
container_type const & container_
Definition: virtual_container.h:136
virtual_container(const container_type &container, std::vector< size_t > map)
Definition: virtual_container.h:103
size_t size() const
Definition: virtual_container.h:134
std::vector< size_t > map_
Definition: virtual_container.h:137
virtual_container< TYPE, CONFIG > make_vc(const std::vector< typename CONFIG::point_type, TYPE > &container, const std::vector< size_t > &map)
Definition: virtual_container.h:142
Definition: virtual_container.h:59
iterator::difference_type difference_type
Definition: virtual_container.h:64
iterator::reference reference
Definition: virtual_container.h:66
iterator::iterator_category iterator_category
Definition: virtual_container.h:62
bool operator!=(const index_iterator &rhs) const
Definition: virtual_container.h:89
iterator::value_type value_type
Definition: virtual_container.h:63
index_iterator operator++(int)
Definition: virtual_container.h:83
value_type operator*() const
Definition: virtual_container.h:73
reference operator*()
Definition: virtual_container.h:74
index_iterator(ARRAY &array, std::size_t index=0)
Definition: virtual_container.h:68
bool operator==(const index_iterator &rhs) const
Definition: virtual_container.h:88
index_iterator & operator=(const index_iterator &)=default
index_iterator & operator++()
Definition: virtual_container.h:79
const pointer operator->() const
Definition: virtual_container.h:75
pointer operator->()
Definition: virtual_container.h:76
index_iterator(const index_iterator &)=default
std::iterator< std::forward_iterator_tag, V > iterator
Definition: virtual_container.h:60
iterator::pointer pointer
Definition: virtual_container.h:65