Delen via


concurrent_unordered_multiset-klasse

De concurrent_unordered_multiset-klasse is een gelijktijdigheidsveilige container waarmee een reeks elementen van het type K wordt bestuurd. De reeks wordt weergegeven op een manier die gelijktijdigheidsveilige toevoeg-, elementtoegang, iterator-toegang en iterator-doorkruisingsbewerkingen mogelijk maakt. Hier zijn gelijktijdigheidsveilige aanwijzers of iterators altijd geldig. Het is geen garantie voor het initialiseren van elementen of van een bepaalde doorkruisingsvolgorde.

Syntaxis

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_multiset : public details::_Concurrent_hash<details::_Concurrent_unordered_set_traits<K,
    details::_Hash_compare<K,
_Hasher,
    key_equality>,
_Allocator_type,
    true>>;

Parameters

K-
Het sleuteltype.

_Hasher
Het objecttype hashfunctie. Dit argument is optioneel en de standaardwaarde is std::hash<K>.

key_equality
Het objecttype gelijkheidsvergelijkingsfunctie. Dit argument is optioneel en de standaardwaarde is std::equal_to<K>.

_Allocator_type
Het type dat het opgeslagen allocatorobject vertegenwoordigt dat details bevat over de toewijzing en toewijzing van het geheugen voor de gelijktijdige vector. Dit argument is optioneel en de standaardwaarde is std::allocator<K>.

Leden

Openbare typedefs

Naam Beschrijving
allocator_type Het type allocator voor het beheren van opslag.
const_iterator Het type van een constante iterator voor de gecontroleerde reeks.
const_local_iterator Het type van een constante bucket-iterator voor de gecontroleerde reeks.
const_pointer Het type constante aanwijzer naar een element.
const_reference Het type constante verwijzing naar een element.
difference_type Het type ondertekende afstand tussen twee elementen.
hasher Het type hash-functie.
iterator Het type iterator voor de gecontroleerde reeks.
key_equal Het type vergelijkingsfunctie.
key_type Het type bestelsleutel.
local_iterator Het type bucket-iterator voor de gecontroleerde reeks.
pointer Het type aanwijzer naar een element.
reference Het type verwijzing naar een element.
size_type Het type niet-ondertekende afstand tussen twee elementen.
value_type Het type element.

Openbare constructors

Naam Beschrijving
concurrent_unordered_multiset Overbelast. Maakt een gelijktijdige niet-geordende multiset.

Openbare methoden

Naam Beschrijving
hash_function Retourneert het opgeslagen hash-functieobject.
invoegen Overbelast. Voegt elementen toe aan het concurrent_unordered_multiset-object.
key_eq Het object voor de opgeslagen gelijkheidsvergelijkingsfunctie.
wisselen Hiermee wordt de inhoud van twee concurrent_unordered_multiset objecten gewisseld. Deze methode is niet gelijktijdigheidsveilig.
unsafe_erase Overbelast. Hiermee verwijdert u elementen uit de concurrent_unordered_multiset op opgegeven posities. Deze methode is niet gelijktijdigheidsveilig.

Openbare operators

Naam Beschrijving
operator = Overbelast. Hiermee wordt de inhoud van een ander concurrent_unordered_multiset object aan dit object toegewezen. Deze methode is niet gelijktijdigheidsveilig.

Opmerkingen

Zie Parallelle containers en objectenvoor gedetailleerde informatie over de klasse concurrent_unordered_multiset.

Overnamehiërarchie

_Traits

_Concurrent_hash

concurrent_unordered_multiset

Eisen

koptekst: concurrent_unordered_set.h

naamruimte: gelijktijdigheid

beginnen

Hiermee wordt een iterator geretourneerd die verwijst naar het eerste element in de gelijktijdige container. Deze methode is veilig voor gelijktijdigheid.

iterator begin();

const_iterator begin() const;

Retourwaarde

Een iterator naar het eerste element in de gelijktijdige container.

cbegin

Retourneert een const iterator die verwijst naar het eerste element in de gelijktijdige container. Deze methode is veilig voor gelijktijdigheid.

const_iterator cbegin() const;

Retourwaarde

Een const iterator naar het eerste element in de gelijktijdige container.

cend

Retourneert een const iterator die verwijst naar de locatie die het laatste element in de gelijktijdige container slaagt. Deze methode is veilig voor gelijktijdigheid.

const_iterator cend() const;

Retourwaarde

Een const iterator voor de locatie die het laatste element in de gelijktijdige container slaagt.

duidelijk

Hiermee worden alle elementen in de gelijktijdige container gewist. Deze functie is niet veilig voor gelijktijdigheid.

void clear();

concurrent_unordered_multiset

Maakt een gelijktijdige niet-geordende multiset.

explicit concurrent_unordered_multiset(
    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_multiset(
    const allocator_type& _Allocator);

template <typename _Iterator>
concurrent_unordered_multiset(_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_multiset(
    const concurrent_unordered_multiset& _Uset);

concurrent_unordered_multiset(
    const concurrent_unordered_multiset& _Uset,
    const allocator_type& _Allocator);

concurrent_unordered_multiset(
    concurrent_unordered_multiset&& _Uset);

Parameters

_Iterator
Het type invoer-iterator.

_Number_of_buckets
Het eerste aantal buckets voor deze niet-geordende multiset.

_Hasher
De hash-functie voor deze niet-geordende multiset.

key_equality
De gelijkheidsvergelijkingsfunctie voor deze ongeordeerde multiset.

_Allocator
De allocator voor deze ongeordeerde multiset.

eerste
laatste
_Uset
Het bronobject concurrent_unordered_multiset waaruit u elementen wilt verplaatsen.

Opmerkingen

Alle constructors slaan een allocatorobject op _Allocator en initialiseren de niet-geordende multiset.

De eerste constructor geeft een lege eerste multiset op en specificeert expliciet het aantal buckets, hash-functie, gelijkheidsfunctie en allocatortype dat moet worden gebruikt.

De tweede constructor geeft een allocator op voor de niet-geordende multiset.

De derde constructor geeft waarden op die worden opgegeven door het iteratorbereik [ _Begin, _End).

De vierde en vijfde constructors geven een kopie op van de gelijktijdige niet-geordende multiset _Uset.

De laatste constructor geeft een verplaatsing van de gelijktijdige niet-geordende multiset _Uset.

tellen

Telt het aantal elementen dat overeenkomt met een opgegeven sleutel. Deze functie is veilig voor gelijktijdigheid.

size_type count(const key_type& KVal) const;

Parameters

KVal-
De sleutel om naar te zoeken.

Retourwaarde

Het aantal keren dat de sleutel in de container wordt weergegeven.

leeg

Test of er geen elementen aanwezig zijn. Deze methode is veilig voor gelijktijdigheid.

bool empty() const;

Retourwaarde

true als de gelijktijdige container leeg is, false anders.

Opmerkingen

Wanneer gelijktijdige invoegingen aanwezig zijn, kan het wijzigen of de gelijktijdige container leeg is direct na het aanroepen van deze functie, voordat de retourwaarde zelfs wordt gelezen.

einde

Retourneert een iterator die verwijst naar de locatie die het laatste element in de gelijktijdige container slaagt. Deze methode is veilig voor gelijktijdigheid.

iterator end();

const_iterator end() const;

Retourwaarde

Een iterator naar de locatie die het laatste element in de gelijktijdige container slaagt.

equal_range

Hiermee zoekt u een bereik dat overeenkomt met een opgegeven sleutel. Deze functie is veilig voor gelijktijdigheid.

std::pair<iterator,
    iterator> equal_range(
    const key_type& KVal);

std::pair<const_iterator,
    const_iterator> equal_range(
    const key_type& KVal) const;

Parameters

KVal-
De sleutelwaarde die moet worden gezocht.

Retourwaarde

Een paar waarbij het eerste element een iterator aan het begin is en het tweede element een iterator aan het einde van het bereik is.

Opmerkingen

Het is mogelijk dat gelijktijdige invoegingen ervoor zorgen dat er extra sleutels worden ingevoegd na de begin-iterator en vóór de eind-iterator.

vinden

Hiermee zoekt u een element dat overeenkomt met een opgegeven sleutel. Deze functie is veilig voor gelijktijdigheid.

iterator find(const key_type& KVal);

const_iterator find(const key_type& KVal) const;

Parameters

KVal-
De sleutelwaarde die moet worden gezocht.

Retourwaarde

Een iterator die verwijst naar de locatie van het eerste element dat overeenkomt met de opgegeven sleutel of de iterator end() als er geen dergelijk element bestaat.

get_allocator

Retourneert het opgeslagen allocatorobject voor deze gelijktijdige container. Deze methode is veilig voor gelijktijdigheid.

allocator_type get_allocator() const;

Retourwaarde

Het opgeslagen allocatorobject voor deze gelijktijdige container.

hash_function

Retourneert het opgeslagen hash-functieobject.

hasher hash_function() const;

Retourwaarde

Het opgeslagen hash-functieobject.

invoegen

Voegt elementen toe aan het concurrent_unordered_multiset-object.

iterator 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>
iterator 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);

Parameters

_Iterator
Het iteratortype dat wordt gebruikt voor invoeging.

V-
Het type van de ingevoegde waarde.

waarde
De waarde die moet worden ingevoegd.

_Where
De beginlocatie om naar een invoegpositie te zoeken.

eerste
Het begin van het bereik dat moet worden ingevoegd.

laatste
Het einde van het bereik dat moet worden ingevoegd.

Retourwaarde

Een iterator die verwijst naar de invoeglocatie.

Opmerkingen

De eerste lidfunctie voegt het element in value in de gecontroleerde volgorde en retourneert vervolgens de iterator die het ingevoegde element aanwijst.

De tweede lidfunctie retourneert insert( value), met behulp van _Where als uitgangspunt binnen de gecontroleerde volgorde om naar de invoegpositie te zoeken.

Met de functie derde lid wordt de reeks elementwaarden uit het bereik [ first, last) ingevoegd ).

De laatste twee lidfuncties gedragen zich hetzelfde als de eerste twee, behalve dat value wordt gebruikt om de ingevoegde waarde samen te stellen.

key_eq

Het object voor de opgeslagen gelijkheidsvergelijkingsfunctie.

key_equal key_eq() const;

Retourwaarde

Het object voor de opgeslagen gelijkheidsvergelijkingsfunctie.

load_factor

Berekent en retourneert de huidige belastingfactor van de container. De belastingfactor is het aantal elementen in de container gedeeld door het aantal buckets.

float load_factor() const;

Retourwaarde

De laadfactor voor de container.

max_load_factor

Hiermee haalt u de maximale laadfactor van de container op of stelt u deze in. De maximale belastingfactor is het grootste aantal elementen dat in een bucket kan staan voordat de container de interne tabel groeit.

float max_load_factor() const;

void max_load_factor(float _Newmax);

Parameters

_Newmax

Retourwaarde

De eerste lidfunctie retourneert de opgeslagen maximale belastingsfactor. De functie tweede lid retourneert geen waarde, maar genereert een out_of_range uitzondering als de opgegeven belastingfactor ongeldig is.

max_size

Retourneert de maximale grootte van de gelijktijdige container, bepaald door de allocator. Deze methode is veilig voor gelijktijdigheid.

size_type max_size() const;

Retourwaarde

Het maximum aantal elementen dat in deze gelijktijdige container kan worden ingevoegd.

Opmerkingen

Deze bovengrenswaarde kan in feite hoger zijn dan wat de container daadwerkelijk kan bevatten.

operator=

Hiermee wordt de inhoud van een ander concurrent_unordered_multiset object aan dit object toegewezen. Deze methode is niet gelijktijdigheidsveilig.

concurrent_unordered_multiset& operator= (const concurrent_unordered_multiset& _Uset);

concurrent_unordered_multiset& operator= (concurrent_unordered_multiset&& _Uset);

Parameters

_Uset
Het bronobject concurrent_unordered_multiset.

Retourwaarde

Een verwijzing naar dit concurrent_unordered_multiset-object.

Opmerkingen

Nadat bestaande elementen in een gelijktijdige niet-geordende multiset zijn verwijderd, operator= kopieën of verplaatst u de inhoud van _Uset naar de gelijktijdige ongeorderde multiset.

Rehash

Hiermee wordt de hash-tabel opnieuw opgebouwd.

void rehash(size_type _Buckets);

Parameters

_Buckets
Het gewenste aantal buckets.

Opmerkingen

De lidfunctie wijzigt het aantal buckets dat ten minste _Buckets is en herbouwt de hash-tabel indien nodig. Het aantal buckets moet een macht van 2 zijn. Als er geen macht van 2 is, wordt het naar boven afgerond op de eerstvolgende grootste macht van 2.

Er wordt een out_of_range uitzondering gegenereerd als het aantal buckets ongeldig is (0 of groter dan het maximum aantal buckets).

grootte

Retourneert het aantal elementen in deze gelijktijdige container. Deze methode is veilig voor gelijktijdigheid.

size_type size() const;

Retourwaarde

Het aantal items in de container.

Opmerkingen

In aanwezigheid van gelijktijdige invoegingen kan het aantal elementen in de gelijktijdige container onmiddellijk na het aanroepen van deze functie veranderen voordat de retourwaarde zelfs wordt gelezen.

ruilen

Hiermee wordt de inhoud van twee concurrent_unordered_multiset objecten gewisseld. Deze methode is niet gelijktijdigheidsveilig.

void swap(concurrent_unordered_multiset& _Uset);

Parameters

_Uset
Het concurrent_unordered_multiset object waarmee moet worden gewisseld.

unsafe_begin

Retourneert een iterator naar het eerste element in deze container voor een specifieke bucket.

local_iterator unsafe_begin(size_type _Bucket);

const_local_iterator unsafe_begin(size_type _Bucket) const;

Parameters

_Bucket
De bucketindex.

Retourwaarde

Een iterator die naar het begin van de bucket wijst.

unsafe_bucket

Retourneert de bucket-index waaraan een specifieke sleutel in deze container is toegewezen.

size_type unsafe_bucket(const key_type& KVal) const;

Parameters

KVal-
De elementsleutel die wordt gezocht.

Retourwaarde

De bucket-index voor de sleutel in deze container.

unsafe_bucket_count

Retourneert het huidige aantal buckets in deze container.

size_type unsafe_bucket_count() const;

Retourwaarde

Het huidige aantal buckets in deze container.

unsafe_bucket_size

Retourneert het aantal items in een specifieke bucket van deze container.

size_type unsafe_bucket_size(size_type _Bucket);

Parameters

_Bucket
De bucket die moet worden gezocht.

Retourwaarde

Het huidige aantal buckets in deze container.

unsafe_cbegin

Retourneert een iterator naar het eerste element in deze container voor een specifieke bucket.

const_local_iterator unsafe_cbegin(size_type _Bucket) const;

Parameters

_Bucket
De bucketindex.

Retourwaarde

Een iterator die naar het begin van de bucket wijst.

unsafe_cend

Retourneert een iterator naar de locatie die het laatste element in een specifieke bucket slaagt.

const_local_iterator unsafe_cend(size_type _Bucket) const;

Parameters

_Bucket
De bucketindex.

Retourwaarde

Een iterator die naar het begin van de bucket wijst.

unsafe_end

Hiermee wordt een iterator geretourneerd naar het laatste element in deze container voor een specifieke bucket.

local_iterator unsafe_end(size_type _Bucket);

const_local_iterator unsafe_end(size_type _Bucket) const;

Parameters

_Bucket
De bucketindex.

Retourwaarde

Een iterator die naar het einde van de bucket wijst.

unsafe_erase

Hiermee verwijdert u elementen uit de concurrent_unordered_multiset op opgegeven posities. Deze methode is niet gelijktijdigheidsveilig.

iterator unsafe_erase(
    const_iterator _Where);

iterator unsafe_erase(
    const_iterator first,
    const_iterator last);

size_type unsafe_erase(
    const key_type& KVal);

Parameters

_Where
De iteratorpositie waaruit moet worden gewist.

eerste
laatste
KVal-
De sleutelwaarde die moet worden gewist.

Retourwaarde

De eerste twee lidfuncties retourneren een iterator die het eerste element aanwijst dat buiten alle verwijderde elementen blijft, of einde van() als er geen dergelijk element bestaat. De functie derde lid retourneert het aantal elementen dat wordt verwijderd.

Opmerkingen

Met de eerste lidfunctie wordt het element verwijderd dat door _Wherewordt verwezen. De tweede lidfunctie verwijdert de elementen in het bereik [ _Begin, _End).

Met de functie derde lid worden de elementen in het bereik verwijderd dat wordt gescheiden door equal_range(KVal).

unsafe_max_bucket_count

Retourneert het maximum aantal buckets in deze container.

size_type unsafe_max_bucket_count() const;

Retourwaarde

Het maximum aantal buckets in deze container.

Zie ook

naamruimte voor gelijktijdigheid
parallelle containers en objecten