Forward declaration of HashSet class. More...
Inherits System::Object, and System::Collections::Generic::ICollection< T >.
Classes | |
class | Enumerator |
Public Types | |
using | ThisType = System::Collections::Generic::HashSet< T > |
Self type. More... | |
using | ThisPtr = SharedPtr< ThisType > |
Pointer type. More... | |
using | set_t = std::unordered_set< T, EqualityComparerHashAdapter< T >, EqualityComparerAdapter< T >, ASPOSE_COLLECTION_ALLOCATOR_TYPE > |
Underlying data type. More... | |
using | iterator = typename set_t::iterator |
Iterator type. More... | |
using | const_iterator = typename set_t::const_iterator |
Const iterator type. More... | |
using | ValueType = T |
Value type. More... | |
using | BaseType = ICollection< T > |
Implemented interface. More... | |
using | IEnumerablePtr = SharedPtr< IEnumerable< T > > |
Enumerable interface pointer. More... | |
using | IEnumeratorPtr = SharedPtr< IEnumerator< T > > |
Enumerator pointer. More... | |
![]() | |
typedef SmartPtr< Object > | ptr |
Alias for smart pointer type. More... | |
![]() | |
typedef T | ValueType |
Value type name. More... | |
typedef ICollection< T > | ThisType |
Collection type name. More... | |
![]() | |
typedef IEnumerator< T > | IEnumeratorType |
Enumerator type. More... | |
using | ValueType = T |
using | iterator = System::Details::VirtualizedIterator< T > |
Iterator type. More... | |
using | const_iterator = System::Details::VirtualizedConstIterator< T > |
Const iterator type. More... | |
using | virtualized_iterator = System::Details::VirtualizedIteratorBase< T > |
Inner iterator base type. More... | |
using | virtualized_iterator_element = T |
Inner iterator element type. More... | |
Public Member Functions | |
HashSet () | |
Creates empty set. More... | |
HashSet (int capacity) | |
Creates empty set with specified capacity. More... | |
HashSet (const SharedPtr< IEqualityComparer< T >> &comparer) | |
HashSet (const SharedPtr< IEnumerable< T >> &items) | |
Creates hashset based on enumerable values. More... | |
const_iterator | begin () const noexcept |
const_iterator | end () const noexcept |
const_iterator | cbegin () const noexcept |
const_iterator | cend () const noexcept |
IEnumeratorPtr | GetEnumerator () override |
int | get_Count () const override |
void | Add (const T &item) override |
bool | TryAdd (const T &item) |
bool | Remove (const T &item) override |
void | Clear () override |
Deletes all elements in set. More... | |
bool | Contains (const T &item) const override |
set_t & | data () |
const set_t & | data () const |
void | _add_range (std::initializer_list< T > list) |
void | CopyTo (ArrayPtr< T > arr, int index) override |
System::Details::VirtualizedIteratorBase< T > * | virtualizeBeginIterator () override |
System::Details::VirtualizedIteratorBase< T > * | virtualizeEndIterator () override |
System::Details::VirtualizedIteratorBase< T > * | virtualizeBeginConstIterator () const override |
System::Details::VirtualizedIteratorBase< T > * | virtualizeEndConstIterator () const override |
virtual int | get_Count () const=0 |
Keeping get_Count() from hiding. More... | |
![]() | |
ASPOSECPP_SHARED_API | Object () |
Creates object. Initializes all internal data structures. More... | |
virtual ASPOSECPP_SHARED_API | ~Object () |
Destroys object. Frees all internal data structures. More... | |
ASPOSECPP_SHARED_API | Object (Object const &x) |
Copy constructor. Doesn't copy anything, really, just initializes new object and enables copy constructing subclasses. More... | |
Object & | operator= (Object const &x) |
Assignment operator. Doesn't copy anything, really, just initializes new object and enables copy constructing subclasses. More... | |
Object * | SharedRefAdded () |
Increments shared reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More... | |
int | SharedRefRemovedSafe () |
Decrements and returns shared reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More... | |
int | RemovedSharedRefs (int count) |
Decreases shared reference count by specified value. More... | |
Detail::SmartPtrCounter * | WeakRefAdded () |
Increments weak reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More... | |
void | WeakRefRemoved () |
Decrements weak reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More... | |
Detail::SmartPtrCounter * | GetCounter () |
Gets reference counter data structure associated with the object. More... | |
int | SharedCount () const |
Gets current value of shared reference counter. More... | |
ASPOSECPP_SHARED_API void | Lock () |
Implements C# lock() statement locking. Call directly or use LockContext sentry object. More... | |
ASPOSECPP_SHARED_API void | Unlock () |
Implements C# lock() statement unlocking. Call directly or use LockContext sentry object. More... | |
virtual ASPOSECPP_SHARED_API bool | Equals (ptr obj) |
Compares objects using C# Object.Equals semantics. More... | |
virtual ASPOSECPP_SHARED_API int32_t | GetHashCode () const |
Analog of C# Object.GetHashCode() method. Enables hashing of custom objects. More... | |
virtual ASPOSECPP_SHARED_API String | ToString () const |
Analog of C# Object.ToString() method. Enables converting custom objects to string. More... | |
virtual ASPOSECPP_SHARED_API ptr | MemberwiseClone () const |
Analog of C# Object.MemberwiseClone() method. Enables cloning custom types. More... | |
virtual ASPOSECPP_SHARED_API const TypeInfo & | GetType () const |
Gets actual type of object. Analog of C# System.Object.GetType() call. More... | |
virtual ASPOSECPP_SHARED_API bool | Is (const TypeInfo &targetType) const |
Check if object represents an instance of type described by targetType. Analog of C# 'is' operator. More... | |
virtual ASPOSECPP_SHARED_API void | SetTemplateWeakPtr (uint32_t argument) |
Set n'th template argument a weak pointer (rather than shared). Allows switching pointers in containers to weak mode. More... | |
virtual ASPOSECPP_SHARED_API bool | FastCast (const Details::FastRttiBase &helper, void **out_ptr) const |
For internal purposes only. More... | |
template<> | |
bool | Equals (float const &objA, float const &objB) |
template<> | |
bool | Equals (double const &objA, double const &objB) |
template<> | |
bool | ReferenceEquals (String const &str, std::nullptr_t) |
template<> | |
bool | ReferenceEquals (String const &str1, String const &str2) |
![]() | |
virtual bool | get_IsReadOnly () const |
ICollection & | operator= (ICollection &&) noexcept |
ICollection & | operator= (const ICollection &) |
ICollection () | |
Default constructor. More... | |
ICollection (const ICollection &) | |
Copy constructor. More... | |
ICollection (ICollection &&) noexcept | |
Move constructor. More... | |
virtual | ~ICollection () |
Destructor. More... | |
SharedPtr< Object > | get_SyncRoot () const |
Gets the object the collection is being synchronized through. More... | |
![]() | |
T | LINQ_ElementAt (int index) |
T | LINQ_First () |
T | LINQ_First (const Func< T, bool > &predicate) |
T | LINQ_FirstOrDefault () |
T | LINQ_FirstOrDefault (std::function< bool(T)> predicate) |
T | LINQ_Last () |
T | LINQ_LastOrDefault () |
SharedPtr< List< T > > | LINQ_ToList () |
int | LINQ_Count () |
int | LINQ_Count (const Func< T, bool > &predicate) |
System::ArrayPtr< T > | LINQ_ToArray () |
bool | LINQ_All (std::function< bool(T)> predicate) |
bool | LINQ_Any () |
bool | LINQ_Any (std::function< bool(T)> predicate) |
SharedPtr< IEnumerable< T > > | LINQ_Where (std::function< bool(T)> predicate) |
bool | LINQ_Contains (T value) |
template<typename ResultType > | |
SharedPtr< IEnumerable< ResultType > > | LINQ_Cast () |
template<typename Key > | |
SharedPtr< IEnumerable< T > > | LINQ_OrderBy (const Func< T, Key > &keySelector) |
template<typename Key > | |
SharedPtr< IEnumerable< T > > | LINQ_OrderByDescending (const Func< T, Key > &keySelector) |
template<typename ResultType > | |
SharedPtr< IEnumerable< ResultType > > | LINQ_OfType () |
template<typename ResultType > | |
SharedPtr< IEnumerable< ResultType > > | LINQ_Select (const Func< T, ResultType > &selector) |
template<typename ResultType > | |
SharedPtr< IEnumerable< ResultType > > | LINQ_Select (const Func< T, int32_t, ResultType > &selector) |
SharedPtr< IEnumerable< T > > | LINQ_Concat (SharedPtr< IEnumerable< T >> sequence) |
template<typename Key > | |
System::SharedPtr< IEnumerable< System::SharedPtr< System::Linq::IGrouping< Key, T > > > > | LINQ_GroupBy (System::Func< T, Key > keyPredicate) |
template<typename ResultType > | |
SharedPtr< IEnumerable< ResultType > > | LINQ_SelectMany (const Func< T, SharedPtr< IEnumerable< ResultType >>> &selector) |
iterator | begin () |
iterator | end () |
const_iterator | begin () const |
const_iterator | end () const |
const_iterator | cbegin () const |
const_iterator | cend () const |
template<typename Result > | |
SharedPtr< IEnumerable< Result > > | LINQ_Cast () |
template<typename Result > | |
SharedPtr< IEnumerable< Result > > | LINQ_OfType () |
template<typename Result > | |
SharedPtr< IEnumerable< Result > > | LINQ_Select (const Func< Source, Result > &selector) |
template<typename Result > | |
SharedPtr< IEnumerable< Result > > | LINQ_Select (const Func< Source, int32_t, Result > &selector) |
template<typename Key > | |
SharedPtr< IEnumerable< Source > > | LINQ_OrderBy (const Func< Source, Key > &keySelector) |
template<typename Key > | |
SharedPtr< IEnumerable< Source > > | LINQ_OrderByDescending (const Func< Source, Key > &keySelector) |
template<typename Key > | |
SharedPtr< IEnumerable< SharedPtr< System::Linq::IGrouping< Key, Source > > > > | LINQ_GroupBy (System::Func< Source, Key > keyPredicate) |
template<typename Result > | |
SharedPtr< IEnumerable< Result > > | LINQ_SelectMany (const Func< Source, SharedPtr< IEnumerable< Result >>> &selector) |
Additional Inherited Members | |
![]() | |
static bool | ReferenceEquals (ptr const &objA, ptr const &objB) |
Compares objects by reference. More... | |
template<typename T > | |
static std::enable_if<!IsSmartPtr< T >::value, bool >::type | ReferenceEquals (T const &objA, T const &objB) |
Compares objects by reference. More... | |
template<typename T > | |
static std::enable_if<!IsSmartPtr< T >::value, bool >::type | ReferenceEquals (T const &objA, std::nullptr_t) |
Reference-compares value type object with nullptr. More... | |
template<typename T1 , typename T2 > | |
static std::enable_if< IsSmartPtr< T1 >::value &&IsSmartPtr< T2 >::value, bool >::type | Equals (T1 const &objA, T2 const &objB) |
Compares reference type objects in C# style. More... | |
template<typename T1 , typename T2 > | |
static std::enable_if<!IsSmartPtr< T1 >::value &&!IsSmartPtr< T2 >::value, bool >::type | Equals (T1 const &objA, T2 const &objB) |
Compares value type objects in C# style. More... | |
static const TypeInfo & | Type () |
Implements C# typeof(System.Object) construct. More... | |
Forward declaration of HashSet class.
Set implementation based on hashing. Objects of this class should only be allocated using System::MakeObject() function. Never create instance of this type on stack or using operator new, as it will result in runtime errors and/or assertion faults. Always wrap this class into System::SmartPtr pointer and use this pointer to pass it to functions as argument.
T | Element type. #include "system/array.h" #include "system/collections/hashset.h" #include "system/smart_ptr.h" void PrintValues(const System::SharedPtr<const System::Collections::Generic::IEnumerable<int>> & collection) { for (auto item: collection) { std::cout << item << ' '; } std::cout << std::endl; } int main() { // Create and fill instances of the HashSet<int> type. auto set1 = System::MakeObject<System::Collections::Generic::HashSet<int>>(); auto set2 = System::MakeObject<System::Collections::Generic::HashSet<int>>(); for (auto i = 0; i < 10; i++) { set1->Add(i); set2->Add(i * 3); } // Print items of the sets. PrintValues(set1); PrintValues(set2); // Copy values of the sets to the array and print values. auto arr = System::MakeArray<int>(set1->get_Count() + set2->get_Count()); set1->CopyTo(arr, 0); set2->CopyTo(arr, set1->get_Count()); PrintValues(arr); return 0; } /* * This code example produces the following output: * 8 0 1 2 3 4 5 6 7 9 * 24 0 3 6 9 12 15 18 21 27 * 8 0 1 2 3 4 5 6 7 9 24 0 3 6 9 12 15 18 21 27 */ |
using System::Collections::Generic::HashSet< T >::BaseType = ICollection<T> |
Implemented interface.
using System::Collections::Generic::HashSet< T >::const_iterator = typename set_t::const_iterator |
Const iterator type.
using System::Collections::Generic::HashSet< T >::IEnumerablePtr = SharedPtr<IEnumerable<T> > |
Enumerable interface pointer.
using System::Collections::Generic::HashSet< T >::IEnumeratorPtr = SharedPtr<IEnumerator<T> > |
Enumerator pointer.
using System::Collections::Generic::HashSet< T >::iterator = typename set_t::iterator |
Iterator type.
using System::Collections::Generic::HashSet< T >::set_t = std::unordered_set<T, EqualityComparerHashAdapter<T>, EqualityComparerAdapter<T>, ASPOSE_COLLECTION_ALLOCATOR_TYPE> |
Underlying data type.
using System::Collections::Generic::HashSet< T >::ThisPtr = SharedPtr<ThisType> |
Pointer type.
using System::Collections::Generic::HashSet< T >::ThisType = System::Collections::Generic::HashSet<T> |
Self type.
using System::Collections::Generic::HashSet< T >::ValueType = T |
Value type.
|
inline |
Creates empty set.
|
inline |
Creates empty set with specified capacity.
|
inline |
Creates empty set that uses the specified equality comparer
comparer | Comparer object to associate with hashset. |
|
inline |
Creates hashset based on enumerable values.
|
inline |
C++ specific
list | Range to insert into container. |
|
inlineoverridevirtual |
Adds element into set.
item | Element to add. |
Implements System::Collections::Generic::ICollection< T >.
|
inlinenoexcept |
Gets iterator to the first element of the const-qualified collection.
|
inlinenoexcept |
Gets iterator to the first const-qualified element of collection.
|
inlinenoexcept |
Gets iterator for a non-existent const-qualified element behind the end of the collection.
|
inlineoverridevirtual |
Deletes all elements in set.
Implements System::Collections::Generic::ICollection< T >.
|
inlineoverridevirtual |
Checks if element is present in set.
item | Item to look for. |
Implements System::Collections::Generic::ICollection< T >.
|
inlineoverridevirtual |
Copies hash contents into existing array elements.
arr | Destination array. |
index | Destination array beginning index. |
Implements System::Collections::Generic::ICollection< T >.
|
inline |
Underlying data structure accessor.
|
inline |
Underlying data structure accessor.
|
inlinenoexcept |
Gets iterator for a non-existent element behind the end of the const-qualified collection.
|
inlineoverridevirtual |
Gets number of elements in set.
Implements System::Collections::Generic::ICollection< T >.
virtual int System::Collections::Generic::ICollection< T >::get_Count |
Keeping get_Count() from hiding.
|
inlineoverridevirtual |
Creates enumerator.
Implements System::Collections::Generic::IEnumerable< T >.
|
inlineoverridevirtual |
Removes element from set.
item | Element to remove. |
Implements System::Collections::Generic::ICollection< T >.
|
inline |
Adds element into set.
item | Item to add. |
|
inlineoverridevirtual |
Gets the implementation of begin const iterator for the current container.
Reimplemented from System::Collections::Generic::IEnumerable< T >.
|
inlineoverridevirtual |
Gets the implementation of begin iterator for the current container.
Reimplemented from System::Collections::Generic::IEnumerable< T >.
|
inlineoverridevirtual |
Gets the implementation of end const iterator for the current container.
Reimplemented from System::Collections::Generic::IEnumerable< T >.
|
inlineoverridevirtual |
Gets the implementation of end iterator for the current container.
Reimplemented from System::Collections::Generic::IEnumerable< T >.