20 #ifndef LIBMESH_CHUNKED_MAPVECTOR_H 21 #define LIBMESH_CHUNKED_MAPVECTOR_H 42 template <
typename Val,
typename index_t=
unsigned int,
unsigned int N=16>
46 typedef std::map<index_t, std::array<Val,N>>
maptype;
50 template <
typename MapIter>
174 typename maptype::const_reverse_iterator
it;
181 auto sub_it = maptype::find(k/N);
182 if (sub_it == maptype::end())
193 auto sub_it = maptype::find(k/N);
194 if (sub_it == maptype::end())
205 return maptype::operator[](k/N)[k%N];
210 typename maptype::const_iterator it = maptype::find(k/N);
211 return it == this->
end().it? Val() : (it->second)[k%N];
216 typename maptype::iterator it = maptype::find(i/N);
217 if (it == maptype::end())
220 (it->second)[i%N] = Val();
221 for (
auto v : it->second)
230 if (pos.it == maptype::end())
237 }
while (newpos.it == pos.it &&
240 for (
auto v : pos.it->second)
244 maptype::erase(pos.it);
282 #endif // LIBMESH_CHUNKED_MAPVECTOR_H
veclike_iterator erase(const veclike_iterator &pos)
bool operator==(const veclike_iterator_base &other) const
veclike_iterator_base(const veclike_iterator_base< T > &i)
bool operator!=(const const_reverse_veclike_iterator &other) const
const Val * operator->() const
Val & operator[](const index_t &k)
const_reverse_veclike_iterator & operator++()
veclike_iterator(const typename maptype::iterator &i, const iter_t idx)
const_veclike_iterator find(const index_t &k) const
const_veclike_iterator begin() const
The libMesh namespace provides an interface to certain functionality in the library.
const Val & operator*() const
veclike_iterator_base(const MapIter &i, const iter_t idx)
const_reverse_veclike_iterator operator++(int)
const_veclike_iterator end() const
veclike_iterator_base & operator++()
maptype::const_reverse_iterator it
const_veclike_iterator(const typename maptype::const_iterator &i, const iter_t idx)
const_reverse_veclike_iterator rend() const
const_reverse_veclike_iterator rbegin() const
std::map< index_t, std::array< Val, N > > maptype
const Val & operator*() const
bool operator!=(const veclike_iterator_base &other) const
veclike_iterator_base operator++(int)
bool operator==(const const_reverse_veclike_iterator &other) const
const Val * operator->() const
This chunked_mapvector templated class is intended to provide the asymptotic performance characterist...
veclike_iterator find(const index_t &k)
const_reverse_veclike_iterator(const typename maptype::const_reverse_iterator &i, const iter_t idx)