13template <
typename K,
typename V>
19 std::variant<Dense, Hash>
var;
29 void resizeReserve(
size_t denseTotalSize,
size_t hashAdditionalCapacity );
48template <
typename K,
typename V>
56template <
typename K,
typename V>
62 hmap.reserve( capacity );
63 res.var = std::move( hmap );
67template <
typename K,
typename V>
71 [denseTotalSize](
Dense& map ) { map.resize( denseTotalSize ); },
72 [hashAdditionalCapacity](
Hash& hashMap ) { hashMap.reserve( hashMap.size() + hashAdditionalCapacity ); }
76template <
typename K,
typename V>
80 [=](
Dense& map ) { assert( key == map.endId() ); map.push_back( val ); },
81 [=](
Hash& hashMap ) { hashMap[key] = val; }
85template <
typename K,
typename V>
90 [&f](
const Dense& map )
92 for ( K key( 0 ); key < map.size(); ++key )
93 if (
auto val = map[key] )
96 [&f](
const Hash& hashMap )
98 for (
const auto & [ key, val ] : hashMap )
104template <
typename K,
typename V>
108 [](
Dense& map ) { map.clear(); },
109 [](
Hash& hashMap ) { hashMap.clear(); }
113template <
typename K,
typename V>
117 [key, def](
const Vector<V, K>& map ) {
return getAt( map, key, def ); },
122template <
typename K,
typename V>
std::vector<T>-like container that requires specific indexing type,
Definition MRMesh/MRVector.h:19
Definition MRCameraOrientationPlugin.h:8
ImVec2 size(const ViewportRectangle &rect)
Definition MRViewport.h:29
T getAt(const Buffer< T, I > &bmap, I key, T def={})
given some buffer map and a key, returns the value associated with the key, or default value if key i...
Definition MRBuffer.h:119
overloaded(Ts...) -> overloaded< Ts... >
void setAt(MapOrHashMap< K, V > &m, K key, V val)
Definition MRMapOrHashMap.h:123
phmap::flat_hash_map< K, V, Hash, Eq > HashMap
Definition MRMesh/MRMeshFwd.h:528
Definition MRMesh/MRMeshFwd.h:540
Dense * getMap()
Definition MRMapOrHashMap.h:39
std::variant< Dense, Hash > var
Definition MRMapOrHashMap.h:19
const Hash * getHashMap() const
Definition MRMapOrHashMap.h:43
static MapOrHashMap createMap(size_t size=0)
Definition MRMapOrHashMap.h:49
Hash * getHashMap()
Definition MRMapOrHashMap.h:42
void pushBack(K key, V val)
Definition MRMapOrHashMap.h:77
void setMap(Dense &&m)
Definition MRMapOrHashMap.h:24
void resizeReserve(size_t denseTotalSize, size_t hashAdditionalCapacity)
Definition MRMapOrHashMap.h:68
const Dense * getMap() const
Definition MRMapOrHashMap.h:40
void forEach(F &&f) const
executes given function for all pairs (key, value) with valid value for dense map
Definition MRMapOrHashMap.h:87
HashMap< K, V > Hash
Definition MRMapOrHashMap.h:17
void clear()
Definition MRMapOrHashMap.h:105
void setHashMap(Hash &&m)
Definition MRMapOrHashMap.h:25
static MapOrHashMap createHashMap(size_t capacity=0)
Definition MRMapOrHashMap.h:57
Definition MRMesh/MRMeshFwd.h:710