20 #ifndef LIBMESH_MAPVECTOR_H 21 #define LIBMESH_MAPVECTOR_H 24 #include "libmesh/pool_allocator.h" 41 template <
typename Val,
typename index_t=
unsigned int>
43 public std::map<index_t, Val, std::less<index_t>,
44 FastPoolAllocator<std::pair<const index_t, Val>>>
47 typedef std::map<index_t, Val, std::less<index_t>,
58 index_t
index()
const {
return it->first; }
71 return it == other.
it;
76 return it != other.
it;
82 typename maptype::iterator
it;
96 index_t
index()
const {
return it->first; }
109 return it == other.
it;
114 return it != other.
it;
120 typename maptype::const_iterator
it;
148 return it == other.
it;
153 return it != other.
it;
159 typename maptype::const_reverse_iterator
it;
162 veclike_iterator
find (
const index_t & k)
164 return veclike_iterator(maptype::find(k));
167 const_veclike_iterator
find (
const index_t & k)
const 169 return const_veclike_iterator(maptype::find(k));
174 return maptype::operator[](k);
179 auto it = this->maptype::find(k);
180 return it == this->
end().
it? Val() : it->second;
188 veclike_iterator
erase(
const veclike_iterator & pos)
190 return veclike_iterator(maptype::erase(pos.it));
195 return veclike_iterator(maptype::begin());
198 const_veclike_iterator
begin()
const 200 return const_veclike_iterator(maptype::begin());
205 return veclike_iterator(maptype::end());
208 const_veclike_iterator
end()
const 210 return const_veclike_iterator(maptype::end());
216 #endif // LIBMESH_MAPVECTOR_H const_veclike_iterator operator++(int)
This mapvector templated class is intended to provide the performance characteristics of a std::map w...
veclike_iterator erase(const veclike_iterator &pos)
const Val & operator*() const
bool operator!=(const const_veclike_iterator &other) const
bool operator!=(const veclike_iterator &other) const
An allocator which can be used in standard containers.
veclike_iterator operator++(int)
const_veclike_iterator end() const
bool operator==(const const_reverse_veclike_iterator &other) const
const_veclike_iterator find(const index_t &k) const
veclike_iterator(const typename maptype::iterator &i)
The libMesh namespace provides an interface to certain functionality in the library.
const_reverse_veclike_iterator & operator++()
const_veclike_iterator(const typename maptype::const_iterator &i)
const_reverse_veclike_iterator operator++(int)
bool operator==(const veclike_iterator &other) const
veclike_iterator & operator++()
const_veclike_iterator(const veclike_iterator &i)
bool operator!=(const const_reverse_veclike_iterator &other) const
const Val & operator*() const
veclike_iterator find(const index_t &k)
const_reverse_veclike_iterator(const veclike_iterator &i)
std::map< index_t, Val, std::less< index_t >, FastPoolAllocator< std::pair< const index_t, Val > > > maptype
const_veclike_iterator & operator++()
const_reverse_veclike_iterator(const const_veclike_iterator &i)
maptype::const_reverse_iterator it
const_veclike_iterator begin() const
maptype::const_iterator it
bool operator==(const const_veclike_iterator &other) const
const_reverse_veclike_iterator(const typename maptype::const_reverse_iterator &i)
Val & operator[](const index_t &k)