Blender  V3.3
Public Types | Public Member Functions | List of all members
blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator > Class Template Reference

#include <BLI_vector_set.hh>

Public Types

using value_type = Key
 
using pointer = Key *
 
using const_pointer = const Key *
 
using reference = Key &
 
using const_reference = const Key &
 
using iterator = Key *
 
using const_iterator = const Key *
 
using size_type = int64_t
 

Public Member Functions

 VectorSet (Allocator allocator={}) noexcept
 
 VectorSet (NoExceptConstructor, Allocator allocator={})
 
 VectorSet (Span< Key > keys, Allocator allocator={})
 
 VectorSet (const std::initializer_list< Key > &keys, Allocator allocator={})
 
 ~VectorSet ()
 
 VectorSet (const VectorSet &other)
 
 VectorSet (VectorSet &&other) noexcept
 
VectorSetoperator= (const VectorSet &other)
 
VectorSetoperator= (VectorSet &&other)
 
const Keyoperator[] (const int64_t index) const
 
 operator Span< Key > () const
 
Span< Keyas_span () const
 
void add_new (const Key &key)
 
void add_new (Key &&key)
 
bool add (const Key &key)
 
bool add (Key &&key)
 
template<typename ForwardKey >
bool add_as (ForwardKey &&key)
 
void add_multiple (Span< Key > keys)
 
bool contains (const Key &key) const
 
template<typename ForwardKey >
bool contains_as (const ForwardKey &key) const
 
bool remove (const Key &key)
 
template<typename ForwardKey >
bool remove_as (const ForwardKey &key)
 
void remove_contained (const Key &key)
 
template<typename ForwardKey >
void remove_contained_as (const ForwardKey &key)
 
Key pop ()
 
int64_t index_of (const Key &key) const
 
template<typename ForwardKey >
int64_t index_of_as (const ForwardKey &key) const
 
int64_t index_of_try (const Key &key) const
 
template<typename ForwardKey >
int64_t index_of_try_as (const ForwardKey &key) const
 
int64_t index_of_or_add (const Key &key)
 
int64_t index_of_or_add (Key &&key)
 
template<typename ForwardKey >
int64_t index_of_or_add_as (ForwardKey &&key)
 
const Keylookup_key (const Key &key) const
 
template<typename ForwardKey >
const Keylookup_key_as (const ForwardKey &key) const
 
const Keylookup_key_ptr (const Key &key) const
 
template<typename ForwardKey >
const Keylookup_key_ptr_as (const ForwardKey &key) const
 
const Keydata () const
 
const Keybegin () const
 
const Keyend () const
 
IndexRange index_range () const
 
void print_stats (StringRef name="") const
 
int64_t size () const
 
bool is_empty () const
 
int64_t capacity () const
 
int64_t removed_amount () const
 
int64_t size_per_element () const
 
int64_t size_in_bytes () const
 
void reserve (const int64_t n)
 
void clear ()
 
int64_t count_collisions (const Key &key) const
 

Detailed Description

template<typename Key, typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
class blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >

Definition at line 88 of file BLI_vector_set.hh.

Member Typedef Documentation

◆ const_iterator

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
using blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::const_iterator = const Key *

Definition at line 96 of file BLI_vector_set.hh.

◆ const_pointer

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
using blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::const_pointer = const Key *

Definition at line 92 of file BLI_vector_set.hh.

◆ const_reference

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
using blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::const_reference = const Key &

Definition at line 94 of file BLI_vector_set.hh.

◆ iterator

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
using blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::iterator = Key *

Definition at line 95 of file BLI_vector_set.hh.

◆ pointer

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
using blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::pointer = Key *

Definition at line 91 of file BLI_vector_set.hh.

◆ reference

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
using blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::reference = Key &

Definition at line 93 of file BLI_vector_set.hh.

◆ size_type

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
using blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::size_type = int64_t

Definition at line 97 of file BLI_vector_set.hh.

◆ value_type

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
using blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::value_type = Key

Definition at line 90 of file BLI_vector_set.hh.

Constructor & Destructor Documentation

◆ VectorSet() [1/6]

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::VectorSet ( Allocator  allocator = {})
inlinenoexcept

Initialize an empty vector set. This is a cheap operation and won't do an allocation. This is necessary to avoid a high cost when no elements are added at all. An optimized grow operation is performed on the first insertion.

Definition at line 156 of file BLI_vector_set.hh.

◆ VectorSet() [2/6]

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::VectorSet ( NoExceptConstructor  ,
Allocator  allocator = {} 
)
inline

Definition at line 166 of file BLI_vector_set.hh.

◆ VectorSet() [3/6]

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::VectorSet ( Span< Key keys,
Allocator  allocator = {} 
)
inline

Definition at line 170 of file BLI_vector_set.hh.

◆ VectorSet() [4/6]

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::VectorSet ( const std::initializer_list< Key > &  keys,
Allocator  allocator = {} 
)
inline

Construct a vector set that contains the given keys. Duplicates will be removed automatically.

Definition at line 178 of file BLI_vector_set.hh.

◆ ~VectorSet()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::~VectorSet ( )
inline

◆ VectorSet() [5/6]

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::VectorSet ( const VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator > &  other)
inline

◆ VectorSet() [6/6]

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::VectorSet ( VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator > &&  other)
inlinenoexcept

Definition at line 210 of file BLI_vector_set.hh.

Member Function Documentation

◆ add() [1/2]

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
bool blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add ( const Key key)
inline

◆ add() [2/2]

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
bool blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add ( Key &&  key)
inline

◆ add_as()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
template<typename ForwardKey >
bool blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add_as ( ForwardKey &&  key)
inline

◆ add_multiple()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
void blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add_multiple ( Span< Key keys)
inline

Convenience function to add many keys to the vector set at once. Duplicates are removed automatically.

We might be able to make this faster than sequentially adding all keys, but that is not implemented yet.

Definition at line 302 of file BLI_vector_set.hh.

References blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add().

Referenced by blender::tests::TEST().

◆ add_new() [1/2]

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
void blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add_new ( const Key key)
inline

Add a new key to the vector set. This invokes undefined behavior when the key is in the set already. When you know for certain that a key is not in the set yet, use this method for better performance. This also expresses the intent better.

Definition at line 267 of file BLI_vector_set.hh.

Referenced by blender::modifiers::geometry_nodes::GeometryNodesEvaluator::create_states_for_reachable_nodes(), InstancesComponent::ensure_geometry_instances(), blender::nodes::node_geo_extrude_mesh_cc::extrude_mesh_face_regions(), blender::geometry::gather_point_attributes_to_interpolate(), blender::ed::curves::get_unique_editable_curves(), refresh_socket_list(), InstancesComponent::remove_unused_references(), and blender::tests::TEST().

◆ add_new() [2/2]

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
void blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add_new ( Key &&  key)
inline

Definition at line 271 of file BLI_vector_set.hh.

◆ as_span()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
Span<Key> blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::as_span ( ) const
inline

Get a Span referencing the keys vector. The referenced memory buffer is only valid as long as the vector set is not changed.

The keys must not be changed, because this would change their hash value.

Definition at line 257 of file BLI_vector_set.hh.

Referenced by blender::nodes::node_geo_extrude_mesh_cc::extrude_mesh_face_regions(), blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::print_stats(), and blender::tests::TEST().

◆ begin()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
const Key* blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::begin ( ) const
inline

Definition at line 443 of file BLI_vector_set.hh.

◆ capacity()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
int64_t blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::capacity ( ) const
inline

Returns the number of available slots. This is mostly for debugging purposes.

Definition at line 489 of file BLI_vector_set.hh.

◆ clear()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
void blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::clear ( )
inline

◆ contains()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
bool blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::contains ( const Key key) const
inline

Returns true if the key is in the vector set.

This is similar to std::unordered_set::find() != std::unordered_set::end().

Definition at line 314 of file BLI_vector_set.hh.

References blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::contains_as().

Referenced by refresh_socket_list(), and blender::tests::TEST().

◆ contains_as()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
template<typename ForwardKey >
bool blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::contains_as ( const ForwardKey &  key) const
inline

◆ count_collisions()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
int64_t blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::count_collisions ( const Key key) const
inline

Get the number of collisions that the probing strategy has to go through to find the key or determine that it is not in the set.

Definition at line 548 of file BLI_vector_set.hh.

◆ data()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
const Key* blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::data ( ) const
inline

Get a pointer to the beginning of the array containing all keys.

Definition at line 438 of file BLI_vector_set.hh.

◆ end()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
const Key* blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::end ( ) const
inline

◆ index_of()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
int64_t blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::index_of ( const Key key) const
inline

◆ index_of_as()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
template<typename ForwardKey >
int64_t blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::index_of_as ( const ForwardKey &  key) const
inline

◆ index_of_or_add() [1/2]

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
int64_t blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::index_of_or_add ( const Key key)
inline

◆ index_of_or_add() [2/2]

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
int64_t blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::index_of_or_add ( Key &&  key)
inline

◆ index_of_or_add_as()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
template<typename ForwardKey >
int64_t blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::index_of_or_add_as ( ForwardKey &&  key)
inline

◆ index_of_try()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
int64_t blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::index_of_try ( const Key key) const
inline

Return the location of the key in the vector. If the key is not in the set, -1 is returned. If you know for sure that the key is in the set, it is better to use index_of instead.

Definition at line 377 of file BLI_vector_set.hh.

References blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::index_of_try_as().

Referenced by blender::nodes::node_geo_extrude_mesh_cc::extrude_mesh_face_regions(), and blender::tests::TEST().

◆ index_of_try_as()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
template<typename ForwardKey >
int64_t blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::index_of_try_as ( const ForwardKey &  key) const
inline

◆ index_range()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
IndexRange blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::index_range ( ) const
inline

Get an index range containing all valid indices for this array.

Definition at line 456 of file BLI_vector_set.hh.

References blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::size().

Referenced by blender::nodes::node_geo_extrude_mesh_cc::extrude_mesh_face_regions().

◆ is_empty()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
bool blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::is_empty ( ) const
inline

Returns true if no keys are stored.

Definition at line 481 of file BLI_vector_set.hh.

Referenced by blender::tests::TEST(), and blender::deg::unregister_graph().

◆ lookup_key()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
const Key& blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_key ( const Key key) const
inline

Returns the key that is stored in the vector set that compares equal to the given key. This invokes undefined behavior when the key is not in the set.

Definition at line 407 of file BLI_vector_set.hh.

References blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_key_as().

Referenced by blender::tests::TEST().

◆ lookup_key_as()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
template<typename ForwardKey >
const Key& blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_key_as ( const ForwardKey &  key) const
inline

◆ lookup_key_ptr()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
const Key* blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_key_ptr ( const Key key) const
inline

Returns a pointer to the key that is stored in the vector set that compares equal to the given key. If the key is not in the set, null is returned.

Definition at line 422 of file BLI_vector_set.hh.

References blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_key_ptr_as().

Referenced by blender::tests::TEST().

◆ lookup_key_ptr_as()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
template<typename ForwardKey >
const Key* blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_key_ptr_as ( const ForwardKey &  key) const
inline

◆ operator Span< Key >()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::operator Span< Key > ( ) const
inline

Definition at line 246 of file BLI_vector_set.hh.

◆ operator=() [1/2]

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
VectorSet& blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::operator= ( const VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator > &  other)
inline

Definition at line 226 of file BLI_vector_set.hh.

References blender::copy_assign_container().

◆ operator=() [2/2]

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
VectorSet& blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::operator= ( VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator > &&  other)
inline

Definition at line 231 of file BLI_vector_set.hh.

References blender::move_assign_container().

◆ operator[]()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
const Key& blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::operator[] ( const int64_t  index) const
inline

Get the key stored at the given position in the vector.

Definition at line 239 of file BLI_vector_set.hh.

References BLI_assert, and blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::size().

◆ pop()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
Key blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::pop ( )
inline

Delete and return a key from the set. This will remove the last element in the vector. The order of the remaining elements in the set is not changed.

Definition at line 355 of file BLI_vector_set.hh.

Referenced by blender::tests::TEST().

◆ print_stats()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
void blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::print_stats ( StringRef  name = "") const
inline

Print common statistics like size and collision count. This is useful for debugging purposes.

Definition at line 464 of file BLI_vector_set.hh.

References blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::as_span(), and blender::HashTableStats::print().

◆ remove()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
bool blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::remove ( const Key key)
inline

Deletes the key from the set. Returns true when the key existed in the set and is now removed. This might change the order of elements in the vector.

This is similar to std::unordered_set::erase.

Definition at line 329 of file BLI_vector_set.hh.

References blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::remove_as().

Referenced by blender::tests::TEST(), and blender::deg::unregister_graph().

◆ remove_as()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
template<typename ForwardKey >
bool blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::remove_as ( const ForwardKey &  key)
inline

◆ remove_contained()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
void blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::remove_contained ( const Key key)
inline

Deletes the key from the set. This invokes undefined behavior when the key is not in the set. It might change the order of elements in the vector.

Definition at line 342 of file BLI_vector_set.hh.

References blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::remove_contained_as().

Referenced by blender::geometry::gather_point_attributes_to_interpolate(), and blender::tests::TEST().

◆ remove_contained_as()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
template<typename ForwardKey >
void blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::remove_contained_as ( const ForwardKey &  key)
inline

◆ removed_amount()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
int64_t blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::removed_amount ( ) const
inline

Returns the amount of removed slots in the set. This is mostly for debugging purposes.

Definition at line 497 of file BLI_vector_set.hh.

◆ reserve()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
void blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::reserve ( const int64_t  n)
inline

Potentially resize the vector set such that it can hold n elements without doing another grow.

Definition at line 522 of file BLI_vector_set.hh.

Referenced by InstancesComponent::ensure_geometry_instances(), blender::nodes::node_geo_extrude_mesh_cc::extrude_mesh_face_regions(), blender::tests::TEST(), and blender::nodes::node_geo_extrude_mesh_cc::vert_indices_from_edges().

◆ size()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
int64_t blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::size ( ) const
inline

◆ size_in_bytes()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
int64_t blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::size_in_bytes ( ) const
inline

Returns the approximate memory requirements of the set in bytes. This is more correct for larger sets.

Definition at line 514 of file BLI_vector_set.hh.

◆ size_per_element()

template<typename Key , typename ProbingStrategy = DefaultProbingStrategy, typename Hash = DefaultHash<Key>, typename IsEqual = DefaultEquality, typename Slot = typename DefaultVectorSetSlot<Key>::type, typename Allocator = GuardedAllocator>
int64_t blender::VectorSet< Key, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::size_per_element ( ) const
inline

Returns the bytes required per element. This is mostly for debugging purposes.

Definition at line 505 of file BLI_vector_set.hh.


The documentation for this class was generated from the following file: