concurrent_unordered_set-Klasse
Die concurrent_unordered_set
Klasse ist ein Parallelitätssicherer Container, der eine unterschiedliche Abfolge von Elementen vom Typ K steuert. Die Sequenz wird auf eine Weise dargestellt, die Parallelitätssicheren Anfüge-, Elementzugriff, Iteratorzugriff und Iterator-Traversalvorgänge ermöglicht. Hier sind Parallelitätssichere Zeiger oder Iteratoren immer gültig. Es ist keine Garantie für die Elementinitialisierung oder eine bestimmte Traversalreihenfolge.
Syntax
template <typename K,
typename _Hasher = std::hash<K>,
typename key_equality = std::equal_to<K>,
typename _Allocator_type = std::allocator<K>
>,
typename key_equality = std::equal_to<K>,
typename _Allocator_type = std::allocator<K>> class concurrent_unordered_set : public details::_Concurrent_hash<details::_Concurrent_unordered_set_traits<K,
details::_Hash_compare<K,
_Hasher,
key_equality>,
_Allocator_type,
false>>;
Parameter
K
Der Schlüsseltyp.
_Hasher
Der Hashfunktionsobjekttyp. Dieses Argument ist optional, und der Standardwert ist std::hash<K>
.
key_equality
Der Gleichheitsvergleich-Funktionsobjekttyp. Dieses Argument ist optional, und der Standardwert ist std::equal_to<K>
.
_Allocator_type
Der Typ, der das gespeicherte Zuordnungsobjekt darstellt, das Details zur Zuordnung und zur Freigabe des Arbeitsspeichers für den gleichzeitigen ungeordneten Satz kapselt. Dieses Argument ist optional, und der Standardwert ist std::allocator<K>
.
Member
Öffentliche Typedefs
Name | Beschreibung |
---|---|
allocator_type |
Der Typ einer Zuweisung für die Speicherverwaltung. |
const_iterator |
Der Typ eines konstanten Iterators für die gesteuerte Sequenz. |
const_local_iterator |
Der Typ eines konstanten Bucketiterators für die gesteuerte Sequenz. |
const_pointer |
Der Typ eines konstanten Zeigers auf ein Element. |
const_reference |
Der Typ eines konstanten Verweises auf ein Element. |
difference_type |
Der Typ eines Abstands mit Vorzeichen zwischen zwei Elementen. |
hasher |
Der Typ der Hashfunktion. |
iterator |
Der Typ eines Iterators für die gesteuerte Sequenz. |
key_equal |
Der Typ der Vergleichsfunktion. |
key_type |
Der Typ eines Sortierschlüssels. |
local_iterator |
Der Typ eines Bucketiterators für die gesteuerte Sequenz. |
pointer |
Der Typ eines Zeigers auf ein Element. |
reference |
Der Typ eines Verweises auf ein Element. |
size_type |
Der Typ eines Abstands ohne Vorzeichen zwischen zwei Elementen. |
value_type |
Der Typ eines Elements. |
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
concurrent_unordered_set | Überladen. Erstellt einen parallelen ungeordneten Satz. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
hash_function | Gibt das gespeicherte Hashfunktionsobjekt zurück. |
insert | Überladen. Fügt dem concurrent_unordered_set -Objekt Elemente hinzu. |
key_eq | Gibt das gespeicherte Gleichheitsvergleich-Funktionsobjekt zurück. |
swap | Vertauscht den Inhalt von zwei concurrent_unordered_set -Objekten. Diese Methode ist nicht nebenläufigkeitssicher. |
unsafe_erase | Überladen. Entfernt Elemente aus der concurrent_unordered_set an angegebenen Positionen. Diese Methode ist nicht nebenläufigkeitssicher. |
Öffentliche Operatoren
Name | Beschreibung |
---|---|
operator= | Überladen. Weist den Inhalt eines anderen concurrent_unordered_set -Objekts diesem Objekt zu. Diese Methode ist nicht nebenläufigkeitssicher. |
Hinweise
Ausführliche Informationen zur concurrent_unordered_set
Klasse finden Sie unter Parallel Containers and Objects.
Vererbungshierarchie
_Traits
_Concurrent_hash
concurrent_unordered_set
Anforderungen
Kopfzeile: concurrent_unordered_set.h
Namespace: Parallelität
begin
Gibt einen Iterator zurück, der auf das erste Element im gleichzeitigen Container zeigt. Diese Methode ist nebenläufigkeitssicher.
iterator begin();
const_iterator begin() const;
Rückgabewert
Ein Iterator für das erste Element im gleichzeitigen Container.
cbegin
Gibt einen Konst iterator zurück, der auf das erste Element im gleichzeitigen Container zeigt. Diese Methode ist nebenläufigkeitssicher.
const_iterator cbegin() const;
Rückgabewert
Ein Iterator für das erste Element im gleichzeitigen Container.
cend
Gibt einen Iterator zurück, der auf die Position zeigt, an der das letzte Element im gleichzeitigen Container erfolgreich war. Diese Methode ist nebenläufigkeitssicher.
const_iterator cend() const;
Rückgabewert
Ein Iterator für die Position, an der das letzte Element im gleichzeitigen Container erfolgreich war.
clear
Löscht alle Elemente im gleichzeitigen Container. Diese Funktion ist nicht parallel.
void clear();
concurrent_unordered_set
Erstellt einen parallelen ungeordneten Satz.
explicit concurrent_unordered_set(
size_type _Number_of_buckets = 8,
const hasher& _Hasher = hasher(),
const key_equal& key_equality = key_equal(),
const allocator_type& _Allocator = allocator_type());
concurrent_unordered_set(
const allocator_type& _Allocator);
template <typename _Iterator>
concurrent_unordered_set(_Iterator first,
_Iterator last,
size_type _Number_of_buckets = 8,
const hasher& _Hasher = hasher(),
const key_equal& key_equality = key_equal(),
const allocator_type& _Allocator = allocator_type());
concurrent_unordered_set(
const concurrent_unordered_set& _Uset);
concurrent_unordered_set(
const concurrent_unordered_set& _Uset,
const allocator_type& _Allocator);
concurrent_unordered_set(
concurrent_unordered_set&& _Uset);
Parameter
_Iterator
Der Typ des Eingabeiterators.
_Number_of_buckets
Die anfängliche Anzahl von Buckets für diesen ungeordneten Satz.
_Hasher
Die Hashfunktion für diesen ungeordneten Satz.
key_equality
Die Gleichheitsvergleichsfunktion für diesen ungeordneten Satz.
_Verteiler
Der Zuweisungsgeber für diesen ungeordneten Satz.
first
last
_Uset
Das concurrent_unordered_set
-Quellobjekt, aus dem Elemente kopiert oder verschoben werden sollen.
Hinweise
Alle Konstruktoren speichern ein Allocator-Objekt _Allocator
und initialisieren den ungeordneten Satz.
Der erste Konstruktor gibt einen leeren Anfangssatz an und gibt explizit die Anzahl der zu verwendenden Buckets, Hashfunktion, Gleichheitsfunktion und allocator-Typ an.
Der zweite Konstruktor gibt einen Konstruktor für den ungeordneten Satz an.
Der dritte Konstruktor gibt werte an, die vom Iteratorbereich [ _Begin
, ). _End
Die vierten und fünften Konstruktoren geben eine Kopie des gleichzeitigen ungeordneten Satzes _Uset
an.
Der letzte Konstruktor gibt eine Verschiebung des gleichzeitigen ungeordneten Satzes _Uset
an.
count
Zählt die Anzahl der Elemente, die einem angegebenen Schlüssel entsprechen. Diese Funktion ist parallel.
size_type count(const key_type& KVal) const;
Parameter
KVal
Der zu suchende Schlüssel.
Rückgabewert
Die Häufigkeit, mit der der Schlüssel im Container angezeigt wird.
empty
Testet, ob keine Elemente vorhanden sind. Diese Methode ist nebenläufigkeitssicher.
bool empty() const;
Rückgabewert
true
wenn der gleichzeitige Container leer ist, false
andernfalls.
Hinweise
Wenn gleichzeitige Einfügungen vorhanden sind oder nicht, kann sich der gleichzeitige Container unmittelbar nach dem Aufrufen dieser Funktion ändern, bevor der Rückgabewert sogar gelesen wird.
end
Gibt einen Iterator zurück, der auf die Position zeigt, an der das letzte Element im gleichzeitigen Container erfolgreich war. Diese Methode ist nebenläufigkeitssicher.
iterator end();
const_iterator end() const;
Rückgabewert
Ein Iterator an die Position, an der das letzte Element im gleichzeitigen Container erfolgreich war.
equal_range
Sucht einen Bereich, der einem angegebenen Schlüssel entspricht. Diese Funktion ist parallel.
std::pair<iterator,
iterator> equal_range(
const key_type& KVal);
std::pair<const_iterator,
const_iterator> equal_range(
const key_type& KVal) const;
Parameter
KVal
Der Schlüsselwert, nach dem gesucht werden soll.
Rückgabewert
Ein Paar , bei dem das erste Element ein Iterator für den Anfang ist und das zweite Element ein Iterator am Ende des Bereichs ist.
Hinweise
Es ist möglich, dass gleichzeitige Einfügungen dazu führen, dass zusätzliche Schlüssel nach dem Start iterator und vor dem End iterator eingefügt werden.
find
Sucht ein Element, das einem angegebenen Schlüssel entspricht. Diese Funktion ist parallel.
iterator find(const key_type& KVal);
const_iterator find(const key_type& KVal) const;
Parameter
KVal
Der Schlüsselwert, nach dem gesucht werden soll.
Rückgabewert
Ein Iterator, der auf die Position des ersten Elements zeigt, das mit dem bereitgestellten Schlüssel übereinstimmt, oder der Iterator end()
, wenn kein solches Element vorhanden ist.
get_allocator
Gibt das gespeicherte Zuweisungsobjekt für diesen gleichzeitigen Container zurück. Diese Methode ist nebenläufigkeitssicher.
allocator_type get_allocator() const;
Rückgabewert
Das gespeicherte Zuweisungsobjekt für diesen gleichzeitigen Container.
hash_function
Gibt das gespeicherte Hashfunktionsobjekt zurück.
hasher hash_function() const;
Rückgabewert
Das gespeicherte Hashfunktionsobjekt.
insert
Fügt dem concurrent_unordered_set
-Objekt Elemente hinzu.
std::pair<iterator,
bool> insert(
const value_type& value);
iterator insert(
const_iterator _Where,
const value_type& value);
template<class _Iterator>
void insert(_Iterator first,
_Iterator last);
template<class V>
std::pair<iterator,
bool> insert(
V&& value);
template<class V>
typename std::enable_if<!std::is_same<const_iterator,
typename std::remove_reference<V>::type>::value,
iterator>::type insert(
const_iterator _Where,
V&& value);
Parameter
_Iterator
Der zum Einfügen verwendete Iteratortyp.
V
Der Typ des in die Menge eingefügten Werts.
value
Der einzufügende Wert.
_Wo
Die Startposition, an der nach einer Einfügemarke gesucht werden soll.
first
Der Anfang des einzufügenden Bereichs.
last
Das Ende des einzufügenden Bereichs.
Rückgabewert
Ein Paar, das einen Iterator und einen booleschen Wert enthält. Weitere Details finden Sie im Abschnitt „Anmerkungen“.
Hinweise
Die erste Memberfunktion bestimmt, ob ein Element X in der Sequenz vorhanden ist, deren Schlüssel die entsprechende Reihenfolge aufweist.value
Andernfalls erstellt es ein solches Element X und initialisiert es mit value
. Die Funktion bestimmt dann den Iterator where
, der X angibt. Wenn eine Einfügung erfolgt ist, wird die Funktion zurückgegeben std::pair(where, true)
. Andernfalls wird std::pair(where, false)
zurückgegeben.
Die zweite Memberfunktion gibt insert( ) zurück, value
wobei _Where
als Ausgangspunkt innerhalb der gesteuerten Sequenz nach der Einfügemarke gesucht wird.
Die dritte Memberfunktion fügt die Abfolge von Elementwerten aus dem Bereich [ first
, ). last
Die letzten beiden Memberfunktionen verhalten sich genauso wie die ersten beiden, mit der Ausnahme, dass value
zum Konstruieren des eingefügten Werts verwendet wird.
key_eq
Gibt das gespeicherte Gleichheitsvergleich-Funktionsobjekt zurück.
key_equal key_eq() const;
Rückgabewert
Das gespeicherte Gleichheitsvergleichsfunktionsobjekt.
load_factor
Berechnet und gibt den aktuellen Ladefaktor des Containers zurück. Der Ladefaktor ist die Anzahl der Elemente im Container dividiert durch die Anzahl der Buckets.
float load_factor() const;
Rückgabewert
Der Ladefaktor für den Container.
max_load_factor
Dient zum Abrufen oder Festlegen des maximalen Ladefaktors des Containers. Der maximale Ladefaktor ist die größte Anzahl von Elementen, als in jedem Bucket enthalten sein kann, bevor der Container seine interne Tabelle wächst.
float max_load_factor() const;
void max_load_factor(float _Newmax);
Parameter
_Newmax
Rückgabewert
Die erste Memberfunktion gibt den gespeicherten maximalen Lastfaktor zurück. Die zweite Memberfunktion gibt keinen Wert zurück, löst jedoch eine out_of_range Ausnahme aus, wenn der angegebene Ladefaktor ungültig ist.
max_size
Gibt die maximale Größe des gleichzeitigen Containers zurück, die vom Allocator bestimmt wird. Diese Methode ist nebenläufigkeitssicher.
size_type max_size() const;
Rückgabewert
Die maximale Anzahl von Elementen, die in diesen gleichzeitigen Container eingefügt werden können.
Hinweise
Dieser obere Begrenzungswert kann tatsächlich höher sein als das, was der Container tatsächlich enthalten kann.
operator =
Weist den Inhalt eines anderen concurrent_unordered_set
-Objekts diesem Objekt zu. Diese Methode ist nicht nebenläufigkeitssicher.
concurrent_unordered_set& operator= (const concurrent_unordered_set& _Uset);
concurrent_unordered_set& operator= (concurrent_unordered_set&& _Uset);
Parameter
_Uset
Das concurrent_unordered_set
-Quellobjekt.
Rückgabewert
Ein Verweis auf das concurrent_unordered_set
-Objekt.
Hinweise
Nach dem Löschen vorhandener Elemente in einem gleichzeitigen ungeordneten Satz kopiert operator=
oder verschiebt den Inhalt _Uset
in den gleichzeitigen ungeordneten Satz.
Aufbereitung
Erstellt die Hashtabelle neu.
void rehash(size_type _Buckets);
Parameter
_Eimer
Die gewünschte Anzahl von Buckets.
Hinweise
Die Memberfunktion ändert die Anzahl der Buckets in mindestens _Buckets
und erstellt ggf. die Hashtabelle neu. Die Anzahl der Buckets muss eine Leistung von 2 sein. Wenn keine Potenz von 2, wird sie auf die nächste größte Potenz von 2 aufgerundet.
Es löst eine out_of_range Ausnahme aus, wenn die Anzahl der Buckets ungültig ist (entweder 0 oder größer als die maximale Anzahl von Buckets).
size
Gibt die Anzahl der Elemente in diesem gleichzeitigen Container zurück. Diese Methode ist nebenläufigkeitssicher.
size_type size() const;
Rückgabewert
Die Anzahl der Elemente im Container.
Hinweise
Wenn gleichzeitige Einfügungen vorhanden sind, kann sich die Anzahl der Elemente im gleichzeitigen Container unmittelbar nach dem Aufruf dieser Funktion ändern, bevor der Rückgabewert sogar gelesen wird.
swap
Vertauscht den Inhalt von zwei concurrent_unordered_set
-Objekten. Diese Methode ist nicht nebenläufigkeitssicher.
void swap(concurrent_unordered_set& _Uset);
Parameter
_Uset
Das concurrent_unordered_set
zu tauschende Objekt.
unsafe_begin
Gibt einen Iterator an das erste Element in diesem Container für einen bestimmten Bucket zurück.
local_iterator unsafe_begin(size_type _Bucket);
const_local_iterator unsafe_begin(size_type _Bucket) const;
Parameter
_Eimer
Der Bucketindex.
Rückgabewert
Ein Iterator, der auf den Anfang des Buckets zeigt.
unsafe_bucket
Gibt den Bucketindex zurück, dem ein bestimmter Schlüssel in diesem Container zugeordnet ist.
size_type unsafe_bucket(const key_type& KVal) const;
Parameter
KVal
Der Elementschlüssel, nach dem gesucht wird.
Rückgabewert
Der Bucketindex für den Schlüssel in diesem Container.
unsafe_bucket_count
Gibt die aktuelle Anzahl der Buckets in diesem Container zurück.
size_type unsafe_bucket_count() const;
Rückgabewert
Die aktuelle Anzahl der Buckets in diesem Container.
unsafe_bucket_size
Gibt die Anzahl der Elemente in einem bestimmten Bucket dieses Containers zurück.
size_type unsafe_bucket_size(size_type _Bucket);
Parameter
_Eimer
Der Bucket, nach dem gesucht werden soll.
Rückgabewert
Die aktuelle Anzahl der Buckets in diesem Container.
unsafe_cbegin
Gibt einen Iterator an das erste Element in diesem Container für einen bestimmten Bucket zurück.
const_local_iterator unsafe_cbegin(size_type _Bucket) const;
Parameter
_Eimer
Der Bucketindex.
Rückgabewert
Ein Iterator, der auf den Anfang des Buckets zeigt.
unsafe_cend
Gibt einen Iterator an die Position zurück, an der das letzte Element in einem bestimmten Bucket erfolgreich war.
const_local_iterator unsafe_cend(size_type _Bucket) const;
Parameter
_Eimer
Der Bucketindex.
Rückgabewert
Ein Iterator, der auf den Anfang des Buckets zeigt.
unsafe_end
Gibt einen Iterator an das letzte Element in diesem Container für einen bestimmten Bucket zurück.
local_iterator unsafe_end(size_type _Bucket);
const_local_iterator unsafe_end(size_type _Bucket) const;
Parameter
_Eimer
Der Bucketindex.
Rückgabewert
Ein Iterator, der auf das Ende des Buckets zeigt.
unsafe_erase
Entfernt Elemente aus der concurrent_unordered_set
an angegebenen Positionen. Diese Methode ist nicht nebenläufigkeitssicher.
iterator unsafe_erase(
const_iterator _Where);
size_type unsafe_erase(
const key_type& KVal);
iterator unsafe_erase(
const_iterator first,
const_iterator last);
Parameter
_Wo
Die Position des Iterators, an der gelöscht werden soll.
KVal
Der Schlüsselwert, der gelöscht werden soll.
first
last
Iteratoren.
Rückgabewert
Die ersten beiden Memberfunktionen geben einen Iterator zurück, der das erste Element angibt, das über alle entfernten Elemente oder End() hinaus verbleibt, wenn kein solches Element vorhanden ist. Die dritte Memberfunktion gibt die Anzahl von Elementen zurück, die sie entfernt.
Hinweise
Die erste Memberfunktion entfernt das Element, auf das durch _Where
gezeigt wird. Die zweite Memberfunktion entfernt die Elemente im Bereich [ _Begin
, _End
).
Die dritte Memberfunktion entfernt die Elemente im Bereich, der durch equal_range(KVal) getrennt ist.
unsafe_max_bucket_count
Gibt die maximale Anzahl von Buckets in diesem Container zurück.
size_type unsafe_max_bucket_count() const;
Rückgabewert
Die maximale Anzahl von Buckets in diesem Container.