Dela via


concurrent_unordered_set-klass

Klassen concurrent_unordered_set är en samtidighetssäker container som styr en sekvens med varierande längd av element av typen K. Sekvensen representeras på ett sätt som möjliggör samtidighetssäker tillägg, elementåtkomst, iteratoråtkomst och iterator-bläddringar. Här innebär samtidighetssäkert att pekare eller iteratorer alltid är giltiga. Det är inte en garanti för elementinitiering eller en viss bläddreringsordning.

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

Parametrar

K
Nyckeltypen.

_Hasher
Objekttypen hash-funktion. Det här argumentet är valfritt och standardvärdet är std::hash<K>.

key_equality
Objekttypen för likhetsjämförelsefunktionen. Det här argumentet är valfritt och standardvärdet är std::equal_to<K>.

_Allocator_type
Den typ som representerar det lagrade allokeringsobjektet som kapslar in information om allokering och frigöring av minne för den samtidiga osorterade uppsättningen. Det här argumentet är valfritt och standardvärdet är std::allocator<K>.

Medlemmar

Offentliga typedefs

Namn Beskrivning
allocator_type Typ av allokerare för hantering av lagring.
const_iterator Typen av en konstant iterator för den kontrollerade sekvensen.
const_local_iterator Typen av en konstant bucket-iterator för den kontrollerade sekvensen.
const_pointer Typen av en konstant pekare till ett element.
const_reference Typen av en konstant referens till ett element.
difference_type Typen av ett signerat avstånd mellan två element.
hasher Typen av hash-funktion.
iterator Typ av iterator för den kontrollerade sekvensen.
key_equal Typen av jämförelsefunktion.
key_type Typ av beställningsnyckel.
local_iterator Typen av bucket iterator för den kontrollerade sekvensen.
pointer Typ av pekare till ett element.
reference Typen av referens till ett element.
size_type Typen av ett osignerat avstånd mellan två element.
value_type Typ av element.

Offentliga konstruktorer

Namn Beskrivning
concurrent_unordered_set Överbelastad. Skapar en samtidig osorterad uppsättning.

Offentliga metoder

Namn Beskrivning
hash_function Returnerar det lagrade hash-funktionsobjektet.
infoga Överbelastad. Lägger till element i concurrent_unordered_set-objektet.
key_eq Returnerar det lagrade likhetsjämförelsefunktionsobjektet.
växla Växlar innehållet i två concurrent_unordered_set objekt. Den här metoden är inte samtidighetssäker.
unsafe_erase Överbelastad. Tar bort element från concurrent_unordered_set på angivna positioner. Den här metoden är inte samtidighetssäker.

Offentliga operatörer

Namn Beskrivning
operator= Överbelastad. Tilldelar innehållet i ett annat concurrent_unordered_set objekt till det här objektet. Den här metoden är inte samtidighetssäker.

Anmärkningar

Detaljerad information om klassen concurrent_unordered_set finns i Parallella containrar och objekt.

Arvshierarki

_Traits

_Concurrent_hash

concurrent_unordered_set

Krav

rubrik: concurrent_unordered_set.h

namnområde: samtidighet

börja

Returnerar en iterator som pekar på det första elementet i den samtidiga containern. Den här metoden är samtidighetssäker.

iterator begin();

const_iterator begin() const;

Returvärde

En iterator till det första elementet i den samtidiga containern.

cbegin

Returnerar en const iterator som pekar på det första elementet i den samtidiga containern. Den här metoden är samtidighetssäker.

const_iterator cbegin() const;

Returvärde

En const iterator till det första elementet i den samtidiga containern.

cend

Returnerar en const-iterator som pekar på platsen som lyckades med det sista elementet i den samtidiga containern. Den här metoden är samtidighetssäker.

const_iterator cend() const;

Returvärde

En const iterator till platsen som lyckades det sista elementet i den samtidiga containern.

klar

Raderar alla element i den samtidiga containern. Den här funktionen är inte samtidighetssäker.

void clear();

concurrent_unordered_set

Skapar en samtidig osorterad uppsättning.

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

Parametrar

_Iterator
Typ av iterator för indata.

_Number_of_buckets
Det inledande antalet bucketar för den här osorterade uppsättningen.

_Hasher
Hash-funktionen för den här osorterade uppsättningen.

key_equality
Likhetsjämförelsefunktionen för den här osorterade uppsättningen.

_Allocator
Allokeraren för den här osorterade uppsättningen.

första
senaste
_Uset
Källan concurrent_unordered_set objekt att kopiera eller flytta element från.

Anmärkningar

Alla konstruktorer lagrar ett allokeringsobjekt _Allocator och initierar den osorterade uppsättningen.

Den första konstruktorn anger en tom inledande uppsättning och anger uttryckligen antalet bucketar, hash-funktion, likhetsfunktion och allokeringstyp som ska användas.

Den andra konstruktorn anger en allokerare för den osorterade uppsättningen.

Den tredje konstruktorn anger värden som tillhandahålls av iteratorintervallet [ _Begin, _End).

Den fjärde och femte konstruktorn anger en kopia av den samtidiga osorterade uppsättningen _Uset.

Den sista konstruktorn anger en flytt av den samtidiga osorterade uppsättningen _Uset.

räkna

Räknar antalet element som matchar en angiven nyckel. Den här funktionen är samtidighetssäker.

size_type count(const key_type& KVal) const;

Parametrar

KVal
Nyckeln att söka efter.

Returvärde

Antalet gånger som nyckeln visas i containern.

tom

Testar om det inte finns några element. Den här metoden är samtidighetssäker.

bool empty() const;

Returvärde

true om den samtidiga containern är tom false annars.

Anmärkningar

I närvaro av samtidiga infogningar kan om den samtidiga containern är tom ändras omedelbart efter att den här funktionen anropats, innan returvärdet ens läse.

ände

Returnerar en iterator som pekar på platsen som lyckas med det sista elementet i den samtidiga containern. Den här metoden är samtidighetssäker.

iterator end();

const_iterator end() const;

Returvärde

En iterator till platsen som lyckades det sista elementet i den samtidiga containern.

equal_range

Hittar ett intervall som matchar en angiven nyckel. Den här funktionen är samtidighetssäker.

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

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

Parametrar

KVal
Nyckelvärdet att söka efter.

Returvärde

Ett par där det första elementet är en iterator till början och det andra elementet är en iterator i slutet av intervallet.

Anmärkningar

Det är möjligt att samtidiga infogningar gör att ytterligare nycklar infogas efter iteratorn och före slutt iteratorn.

hitta

Hittar ett element som matchar en angiven nyckel. Den här funktionen är samtidighetssäker.

iterator find(const key_type& KVal);

const_iterator find(const key_type& KVal) const;

Parametrar

KVal
Nyckelvärdet att söka efter.

Returvärde

En iterator som pekar på platsen för det första elementet som matchade den angivna nyckeln, eller iteratorn end() om det inte finns något sådant element.

get_allocator

Returnerar det lagrade allokeringsobjektet för den här samtidiga containern. Den här metoden är samtidighetssäker.

allocator_type get_allocator() const;

Returvärde

Det lagrade allokeringsobjektet för den här samtidiga containern.

hash_function

Returnerar det lagrade hash-funktionsobjektet.

hasher hash_function() const;

Returvärde

Det lagrade hash-funktionsobjektet.

infoga

Lägger till element i concurrent_unordered_set-objektet.

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

Parametrar

_Iterator
Den iteratortyp som används för infogning.

V
Typen av värde som infogats i uppsättningen.

värde
Värdet som ska infogas.

_Where
Startplatsen för att söka efter en insättningspunkt.

första
Början av intervallet som ska infogas.

senaste
Slutet av intervallet som ska infogas.

Returvärde

Ett par som innehåller en iterator och ett booleskt värde. Mer information finns i avsnittet Kommentarer.

Anmärkningar

Den första medlemsfunktionen avgör om ett element X finns i sekvensen vars nyckel har motsvarande ordning som value. Annars skapar det ett sådant element X och initierar det med value. Funktionen avgör sedan iteratorn where som anger X. Om en infogning inträffar returnerar funktionen std::pair(where, true). Annars returneras std::pair(where, false).

Den andra medlemsfunktionen returnerar insert( value), med _Where som en startplats i den kontrollerade sekvensen för att söka efter insättningspunkten.

Den tredje medlemsfunktionen infogar sekvensen med elementvärden från intervallet [ first, last).

De två sista medlemsfunktionerna fungerar på samma sätt som de två första, förutom att value används för att konstruera det infogade värdet.

key_eq

Returnerar det lagrade likhetsjämförelsefunktionsobjektet.

key_equal key_eq() const;

Returvärde

Det lagrade likhetsjämförelsefunktionsobjektet.

load_factor

Beräknar och returnerar containerns aktuella inläsningsfaktor. Belastningsfaktorn är antalet element i containern dividerat med antalet bucketar.

float load_factor() const;

Returvärde

Inläsningsfaktorn för containern.

max_load_factor

Hämtar eller anger containerns maximala belastningsfaktor. Den maximala belastningsfaktorn är det största antalet element än vad som kan finnas i någon bucket innan containern växer sin interna tabell.

float max_load_factor() const;

void max_load_factor(float _Newmax);

Parametrar

_Newmax

Returvärde

Den första medlemsfunktionen returnerar den lagrade maxbelastningsfaktorn. Den andra medlemsfunktionen returnerar inte ett värde men genererar ett out_of_range undantag om den angivna inläsningsfaktorn är ogiltig.

max_size

Returnerar den maximala storleken på den samtidiga containern, som bestäms av allokeraren. Den här metoden är samtidighetssäker.

size_type max_size() const;

Returvärde

Det maximala antalet element som kan infogas i den här samtidiga containern.

Anmärkningar

Det här övre gränsvärdet kan faktiskt vara högre än vad containern faktiskt kan innehålla.

operator=

Tilldelar innehållet i ett annat concurrent_unordered_set objekt till det här objektet. Den här metoden är inte samtidighetssäker.

concurrent_unordered_set& operator= (const concurrent_unordered_set& _Uset);

concurrent_unordered_set& operator= (concurrent_unordered_set&& _Uset);

Parametrar

_Uset
Källobjektet concurrent_unordered_set.

Returvärde

En referens till det här concurrent_unordered_set objektet.

Anmärkningar

När du har raderat befintliga element i en samtidig osorterad uppsättning operator= antingen kopierar eller flyttar innehållet i _Uset till den samtidiga osorterade uppsättningen.

Uppkok

Återskapar hash-tabellen.

void rehash(size_type _Buckets);

Parametrar

_Buckets
Önskat antal bucketar.

Anmärkningar

Medlemsfunktionen ändrar antalet bucketar som ska vara minst _Buckets och återskapar hash-tabellen efter behov. Antalet bucketar måste vara en effekt på 2. Om inte en kraft på 2 avrundas den upp till nästa största kraft på 2.

Det genererar ett out_of_range undantag om antalet bucketar är ogiltigt (antingen 0 eller större än det maximala antalet bucketar).

storlek

Returnerar antalet element i den här samtidiga containern. Den här metoden är samtidighetssäker.

size_type size() const;

Returvärde

Antalet objekt i containern.

Anmärkningar

I närvaro av samtidiga infogningar kan antalet element i den samtidiga containern ändras omedelbart efter att den här funktionen anropats, innan returvärdet ens läse.

byta

Växlar innehållet i två concurrent_unordered_set objekt. Den här metoden är inte samtidighetssäker.

void swap(concurrent_unordered_set& _Uset);

Parametrar

_Uset
Det concurrent_unordered_set objekt som ska växlas med.

unsafe_begin

Returnerar en iterator till det första elementet i den här containern för en specifik bucket.

local_iterator unsafe_begin(size_type _Bucket);

const_local_iterator unsafe_begin(size_type _Bucket) const;

Parametrar

_Bucket
Bucketindexet.

Returvärde

En iterator som pekar på bucketens början.

unsafe_bucket

Returnerar bucketindexet som en specifik nyckel mappar till i den här containern.

size_type unsafe_bucket(const key_type& KVal) const;

Parametrar

KVal
Den elementnyckel som söks efter.

Returvärde

Bucketindexet för nyckeln i den här containern.

unsafe_bucket_count

Returnerar det aktuella antalet bucketar i den här containern.

size_type unsafe_bucket_count() const;

Returvärde

Det aktuella antalet bucketar i den här containern.

unsafe_bucket_size

Returnerar antalet objekt i en specifik bucket i den här containern.

size_type unsafe_bucket_size(size_type _Bucket);

Parametrar

_Bucket
Bucketen att söka efter.

Returvärde

Det aktuella antalet bucketar i den här containern.

unsafe_cbegin

Returnerar en iterator till det första elementet i den här containern för en specifik bucket.

const_local_iterator unsafe_cbegin(size_type _Bucket) const;

Parametrar

_Bucket
Bucketindexet.

Returvärde

En iterator som pekar på bucketens början.

unsafe_cend

Returnerar en iterator till platsen som lyckades det sista elementet i en specifik bucket.

const_local_iterator unsafe_cend(size_type _Bucket) const;

Parametrar

_Bucket
Bucketindexet.

Returvärde

En iterator som pekar på bucketens början.

unsafe_end

Returnerar en iterator till det sista elementet i den här containern för en specifik bucket.

local_iterator unsafe_end(size_type _Bucket);

const_local_iterator unsafe_end(size_type _Bucket) const;

Parametrar

_Bucket
Bucketindexet.

Returvärde

En iterator som pekar mot slutet av bucketen.

unsafe_erase

Tar bort element från concurrent_unordered_set på angivna positioner. Den här metoden är inte samtidighetssäker.

iterator unsafe_erase(
    const_iterator _Where);

size_type unsafe_erase(
    const key_type& KVal);

iterator unsafe_erase(
    const_iterator first,
    const_iterator last);

Parametrar

_Where
Iteratorpositionen att radera från.

KVal
Nyckelvärdet som ska raderas.

första
senaste
Iteratorer.

Returvärde

De första två medlemsfunktionerna returnerar en iterator som anger det första elementet som återstår utöver alla element som tas bort, eller slut() om det inte finns något sådant element. Den tredje medlemsfunktionen returnerar antalet element som den tar bort.

Anmärkningar

Den första medlemsfunktionen tar bort elementet som pekas på av _Where. Den andra medlemsfunktionen tar bort elementen i intervallet [ _Begin, _End).

Den tredje medlemsfunktionen tar bort elementen i intervallet som avgränsas av equal_range(KVal).

unsafe_max_bucket_count

Returnerar det maximala antalet bucketar i den här containern.

size_type unsafe_max_bucket_count() const;

Returvärde

Det maximala antalet bucketar i den här containern.

Se även

samtidighetsnamnområde
parallella containrar och objekt