Aracılığıyla paylaş


concurrent_unordered_map Sınıfı

concurrent_unordered_map sınıfı, türünde std::pair<const K, _Element_type>öğelerin değişen uzunluklu dizisini denetleen eşzamanlılık açısından güvenli bir kapsayıcıdır. Sıra eşzamanlılık açısından güvenli ekleme, öğe erişimi, yineleyici erişimi ve yineleyici geçiş işlemlerini etkinleştiren bir şekilde temsil edilir. Burada eşzamanlılık açısından güvenli, işaretçilerin veya yineleyicilerin her zaman geçerli olduğu anlamına gelir. Bu, öğe başlatma veya belirli bir dolaşma sırasının garantisi değildir.

Sözdizimi

template <typename K,
    typename _Element_type,
    typename _Hasher = std::hash<K>,
    typename key_equality = std::equal_to<K>,
    typename _Allocator_type = std::allocator<std::pair<const K,
    _Element_type>>
>,
typename key_equality = std::equal_to<K>,
    typename _Allocator_type = std::allocator<std::pair<const K,
    _Element_type>>> class concurrent_unordered_map : public details::_Concurrent_hash<details::_Concurrent_unordered_map_traits<K,
    _Element_type,
details::_Hash_compare<K,
    _Hasher,
key_equality>,
    _Allocator_type,
false>>;

Parametreler

Kahraman
Anahtar türü.

_Element_type
Eşlenen tür.

_Hasher
Karma işlev nesne türü. Bu bağımsız değişken isteğe bağlıdır ve varsayılan değerdir std::hash<K>.

key_equality
Eşitlik karşılaştırma işlevi nesne türü. Bu bağımsız değişken isteğe bağlıdır ve varsayılan değerdir std::equal_to<K>.

_Allocator_type
Eşzamanlı sıralanmamış eşleme için bellek ayırma ve serbest bırakma hakkındaki ayrıntıları kapsülleyen depolanmış ayırıcı nesnesini temsil eden tür. Bu bağımsız değişken isteğe bağlıdır ve varsayılan değer , _Element_type>>şeklindedirstd::allocator<std::pair<K.

Üyeler

Genel Tür Tanımları

Ad Tanım
allocator_type Depolamayı yönetmek için bir ayırıcı türü.
const_iterator Denetlenen dizi için bir sabit yineleyici türü.
const_local_iterator Denetlenen dizi için bir sabit demet yineleyici türü.
const_pointer Bir öğe için sabit bir işaretçi türü.
const_reference Bir öğe için sabit bir başvuru türü.
difference_type İki öğe arasındaki işaretli mesafenin türü.
hasher Karma işlevin türü.
iterator Denetlenen dizi için bir yineleyici türü.
key_equal Karşılaştırma işlevinin türü.
key_type Bir sıralama anahtarının türü.
local_iterator Denetlenen dizi için bir demet yineleyici türü.
mapped_type Her bir anahtar ile ilişkili bir eşlenen değer türü.
pointer Bir öğe için bir işaretçi türü.
reference Bir öğe için bir başvuru türü.
size_type İki öğe arasındaki işaretsiz bir mesafenin türü.
value_type Öğenin türü.

Ortak Oluşturucular

Ad Tanım
Concurrent_unordered_map Aşırı yüklendi. Eşzamanlı sıralanmamış eşlem oluşturur.

Genel Yöntemler

Ad Tanım
konumunda Aşırı yüklendi. içinde belirtilen anahtar değerine sahip bir öğe concurrent_unordered_map bulur.. Bu yöntem eşzamanlılık açısından güvenlidir.
hash_function Depolanan karma işlevi nesnesini alır.
Ekle Aşırı yüklendi. Nesneye concurrent_unordered_map öğe ekler.
key_eq Depolanan eşitlik karşılaştırma işlevi nesnesini alır.
Takas İki concurrent_unordered_map nesnenin içeriğini değiştirir. Bu yöntem eşzamanlılık açısından güvenli değildir.
unsafe_erase Aşırı yüklendi. Belirtilen konumlarda öğesinden concurrent_unordered_map öğeleri kaldırır. Bu yöntem eşzamanlılık açısından güvenli değildir.

Ortak İşleçler

Ad Tanım
işleç[] Aşırı yüklendi. Belirtilen anahtarı içeren bir öğe bulur veya ekler. Bu yöntem eşzamanlılık açısından güvenlidir.
operator= Aşırı yüklendi. Başka bir concurrent_unordered_map nesnenin içeriğini bu nesneye atar. Bu yöntem eşzamanlılık açısından güvenli değildir.

Açıklamalar

sınıfı hakkında concurrent_unordered_map ayrıntılı bilgi için bkz . Paralel Kapsayıcılar ve Nesneler.

Devralma Hiyerarşisi

_Traits

_Concurrent_hash

concurrent_unordered_map

Gereksinimler

Üst bilgi: concurrent_unordered_map.h

Ad alanı: eşzamanlılık

saat:

içinde belirtilen anahtar değerine sahip bir öğe concurrent_unordered_map bulur.. Bu yöntem eşzamanlılık açısından güvenlidir.

mapped_type& at(const key_type& KVal);

const mapped_type& at(const key_type& KVal) const;

Parametreler

KVal
Bulunacak anahtar değeri.

İade Değeri

Bulunan öğenin veri değerine başvuru.

Açıklamalar

Bağımsız değişken anahtarı değeri bulunamazsa, işlevi sınıfının out_of_rangebir nesnesini oluşturur.

Başlamak

Eşzamanlı kapsayıcıdaki ilk öğeye işaret eden bir yineleyici döndürür. Bu yöntem eşzamanlılık güvenlidir.

iterator begin();

const_iterator begin() const;

İade Değeri

Eşzamanlı kapsayıcıdaki ilk öğeye bir yineleyici.

cbegin

Eşzamanlı kapsayıcıdaki ilk öğeye işaret eden bir sabit yineleyici döndürür. Bu yöntem eşzamanlılık güvenlidir.

const_iterator cbegin() const;

İade Değeri

Eşzamanlı kapsayıcıdaki ilk öğeye sabit yineleyici.

cend

Eşzamanlı kapsayıcıdaki son öğenin başarılı olduğu konumu gösteren bir sabit yineleyici döndürür. Bu yöntem eşzamanlılık güvenlidir.

const_iterator cend() const;

İade Değeri

Eşzamanlı kapsayıcıdaki son öğenin başarılı olduğu konuma sabit yineleyici.

Temizleyin

Eşzamanlı kapsayıcıdaki tüm öğeleri siler. Bu işlev eşzamanlılık açısından güvenli değildir.

void clear();

Concurrent_unordered_map

Eşzamanlı sıralanmamış eşlem oluşturur.

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

template <typename _Iterator>
concurrent_unordered_map(_Iterator _Begin,
    _Iterator _End,
    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_map(
    const concurrent_unordered_map& _Umap);

concurrent_unordered_map(
    const concurrent_unordered_map& _Umap,
    const allocator_type& _Allocator);

concurrent_unordered_map(
    concurrent_unordered_map&& _Umap);

Parametreler

_Yineleyici
Giriş yineleyicisinin türü.

_Number_of_buckets
Bu sıralanmamış harita için ilk demet sayısı.

_Hasher
Bu sıralanmamış eşleme için karma işlevi.

key_equality
Bu sıralanmamış harita için eşitlik karşılaştırma işlevi.

_Ayırıcı
Bu sıralanmamış haritanın ayırıcısı.

_Başlamak
Kopyalanacak öğe aralığındaki ilk öğenin konumu.

_Son -unda
Kopyalanacak öğe aralığının ötesindeki ilk öğenin konumu.

_Ulu
Öğeleri kopyalamak veya taşımak için kaynak concurrent_unordered_map nesne.

Açıklamalar

Tüm oluşturucular bir ayırıcı nesnesi _Allocator depolar ve sıralanmamış eşlemeyi başlatır.

İlk oluşturucu boş bir başlangıç eşlemesi belirtir ve kullanılacak demet sayısını, karma işlevini, eşitlik işlevini ve ayırıcı türünü açıkça belirtir.

İkinci oluşturucu, sıralanmamış eşleme için bir ayırıcı belirtir.

Üçüncü oluşturucu[ _Begin, _End) yineleyici aralığı tarafından sağlanan değerleri belirtir.

Dördüncü ve beşinci oluşturucular eşzamanlı sıralanmamış eşlemenin _Umapbir kopyasını belirtir.

Son oluşturucu eşzamanlı sıralanmamış eşlemenin _Umaptaşınmasını belirtir.

count

Belirtilen anahtarla eşleşen öğe sayısını sayar. Bu işlev eşzamanlılık açısından güvenlidir.

size_type count(const key_type& KVal) const;

Parametreler

KVal
Aranacak anahtar.

İade Değeri

Anahtarın kapsayıcıda görünme sayısı.

empty

Bir öğe olup olmadığını sınar. Bu yöntem eşzamanlılık güvenlidir.

bool empty() const;

İade Değeri

true eşzamanlı kapsayıcı boşsa, false aksi takdirde.

Açıklamalar

Eşzamanlı eklemelerin varlığında, eş zamanlı kapsayıcının boş olup olmadığı, dönüş değeri okunmadan hemen sonra bu işlev çağrıldıktan hemen sonra değişebilir.

end

Eşzamanlı kapsayıcıdaki son öğenin başarılı olduğu konumu gösteren bir yineleyici döndürür. Bu yöntem eşzamanlılık güvenlidir.

iterator end();

const_iterator end() const;

İade Değeri

Eşzamanlı kapsayıcıdaki son öğenin başarılı olduğu konuma bir yineleyici.

equal_range

Belirtilen anahtarla eşleşen bir aralık bulur. Bu işlev eşzamanlılık açısından güvenlidir.

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

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

Parametreler

KVal
Aranacak anahtar değeri.

İade Değeri

İlk öğenin başına bir yineleyici, ikinci öğenin ise aralığın sonuna doğru yineleyici olduğu bir çift.

Açıklamalar

Eşzamanlı eklemelerin, başlangıç yineleyiciden sonra ve bitiş yineleyiciden önce ek anahtarların eklenmesine neden olması mümkündür.

find

Belirtilen bir anahtarla eşleşen bir öğeyi bulur. Bu işlev eşzamanlılık açısından güvenlidir.

iterator find(const key_type& KVal);

const_iterator find(const key_type& KVal) const;

Parametreler

KVal
Aranacak anahtar değeri.

İade Değeri

Sağlanan anahtarla eşleşen ilk öğenin konumunu veya böyle bir öğe yoksa yineleyiciyi işaret eden bir yineleyici end() .

Get_allocator

Bu eşzamanlı kapsayıcı için depolanan ayırıcı nesnesini döndürür. Bu yöntem eşzamanlılık güvenlidir.

allocator_type get_allocator() const;

İade Değeri

Bu eşzamanlı kapsayıcı için depolanan ayırıcı nesnesi.

hash_function

Depolanan karma işlevi nesnesini alır.

hasher hash_function() const;

İade Değeri

Depolanan karma işlev nesnesi.

insert

Nesneye concurrent_unordered_map öğe ekler.

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

Parametreler

_Yineleyici
Ekleme için kullanılan yineleyici türü.

V
Eşlem içine eklenen değerin türü.

value
Eklenecek değer.

_Nerede
Ekleme noktasını aramak için başlangıç konumu.

Ilk
Eklenecek aralığın başlangıcı.

Son
Eklenecek aralığın sonu.

İade Değeri

Yineleyici ve boole değeri içeren bir çift. Daha fazla ayrıntı için Açıklamalar bölümüne bakın.

Açıklamalar

İlk üye işlevi, anahtarı ile eşdeğer sıralamaya sahip olan bir X öğesinin valuedizisinde mevcut olup olmadığını belirler. Aksi takdirde, böyle bir X öğesi oluşturur ve ile valuebaşlatır. İşlev daha sonra X'i belirten yineleyiciyi where belirler. Ekleme işlemi gerçekleştiyse işlevi döndürür std::pair(where, true). Aksi takdirde döndürür std::pair(where, false).

İkinci üye işlevi, ekleme noktasını aramak için denetimli dizi içinde başlangıç noktası olarak kullanarak _Where insert( valuedeğerini döndürür.

Üçüncü üye işlevi, [ first, last) aralığındaki öğe değerlerinin sırasını ekler.

Son iki üye işlevi, eklenen değeri oluşturmak için kullanılan dışında value ilk iki işlevle aynı şekilde davranır.

key_eq

Depolanan eşitlik karşılaştırma işlevi nesnesini alır.

key_equal key_eq() const;

İade Değeri

Depolanan eşitlik karşılaştırma işlevi nesnesi.

load_factor

Kapsayıcının geçerli yük faktörünü hesaplar ve döndürür. Yük faktörü, kapsayıcıdaki öğelerin demet sayısına bölünmesidir.

float load_factor() const;

İade Değeri

Kapsayıcının yük faktörü.

max_load_factor

Kapsayıcının en yüksek yük faktörünü alır veya ayarlar. En fazla yük faktörü, kapsayıcı iç tablosunu büyütmeden önce herhangi bir demette bulunabilecek en fazla öğe sayısıdır.

float max_load_factor() const;

void max_load_factor(float _Newmax);

Parametreler

_Newmax

İade Değeri

İlk üye işlevi depolanan en yüksek yük faktörünü döndürür. İkinci üye işlevi bir değer döndürmez, ancak sağlanan yük faktörü geçersizse out_of_range özel durumu oluşturur..

max_size

Ayırıcı tarafından belirlenen eşzamanlı kapsayıcının en büyük boyutunu döndürür. Bu yöntem eşzamanlılık güvenlidir.

size_type max_size() const;

İade Değeri

Bu eşzamanlı kapsayıcıya eklenebilen en fazla öğe sayısı.

Açıklamalar

Bu üst sınır değeri aslında kapsayıcının barındırabileceği değerden daha yüksek olabilir.

işleç[]

Belirtilen anahtarı içeren bir öğe bulur veya ekler. Bu yöntem eşzamanlılık açısından güvenlidir.

mapped_type& operator[](const key_type& kval);

mapped_type& operator[](key_type&& kval);

Parametreler

KVal
Anahtar değeri:

bulun veya ekleyin.

İade Değeri

Bulunan veya eklenen öğenin veri değerine başvuru.

Açıklamalar

Bağımsız değişken anahtar değeri bulunamazsa, değer veri türünün varsayılan değeriyle birlikte eklenir.

operator[]kullanarak bir eşlem m içine öğe eklemek için kullanılabilir; buradaDataValue, öğesinin mapped_type değerinin anahtar değerine sahip olmasıdırkey.m[key] = DataValue;

Öğe eklemek için kullanılırken operator[] , döndürülen başvuru eklemenin önceden var olan bir öğeyi değiştirdiğini veya yeni bir öğe oluşturduğunu göstermez. Üye işlevleri find ve ekleme , belirtilen anahtara sahip bir öğenin eklemeden önce zaten mevcut olup olmadığını belirlemek için kullanılabilir.

operator=

Başka bir concurrent_unordered_map nesnenin içeriğini bu nesneye atar. Bu yöntem eşzamanlılık açısından güvenli değildir.

concurrent_unordered_map& operator= (const concurrent_unordered_map& _Umap);

concurrent_unordered_map& operator= (concurrent_unordered_map&& _Umap);

Parametreler

_Ulu
Kaynak concurrent_unordered_map nesne.

İade Değeri

Bu concurrent_unordered_map nesneye bir başvuru.

Açıklamalar

Mevcut öğeleri eş zamanlı vektör olarak sildikten sonra, operator= içeriğini _Umap eşzamanlı vektöre kopyalar veya taşır.

Rehash

Karma tabloyu yeniden oluşturur.

void rehash(size_type _Buckets);

Parametreler

_Kova
İstenen demet sayısı.

Açıklamalar

Üye işlevi, demet sayısını en az _Buckets olacak şekilde değiştirir ve karma tabloyu gerektiği gibi yeniden oluşturur. Demet sayısı 2'lik bir güç olmalıdır. 2'nin gücü değilse, 2'nin sonraki en büyük gücüne yuvarlanacaktır.

Demet sayısı geçersizse (demet sayısı üst sınırından 0 veya daha fazla) bir out_of_range özel durumu oluşturur.

size

Bu eşzamanlı kapsayıcıdaki öğe sayısını döndürür. Bu yöntem eşzamanlılık güvenlidir.

size_type size() const;

İade Değeri

Kapsayıcıdaki öğelerin sayısı.

Açıklamalar

Eşzamanlı eklemelerin varlığında, dönüş değeri okunmadan önce eşzamanlı kapsayıcıdaki öğelerin sayısı bu işlev çağrıldıktan hemen sonra değişebilir.

swap

İki concurrent_unordered_map nesnenin içeriğini değiştirir. Bu yöntem eşzamanlılık açısından güvenli değildir.

void swap(concurrent_unordered_map& _Umap);

Parametreler

_Ulu
Değiştirecek concurrent_unordered_map nesne.

unsafe_begin

Belirli bir demet için bu kapsayıcıdaki ilk öğeye bir yineleyici döndürür.

local_iterator unsafe_begin(size_type _Bucket);

const_local_iterator unsafe_begin(size_type _Bucket) const;

Parametreler

_Kova
Demet dizini.

İade Değeri

Demetin başına işaret eden bir yineleyici.

unsafe_bucket

Bu kapsayıcıda belirli bir anahtarın eşlediğiniz demet dizinini döndürür.

size_type unsafe_bucket(const key_type& KVal) const;

Parametreler

KVal
Aranmakta olan öğe anahtarı.

İade Değeri

Bu kapsayıcıdaki anahtarın demet dizini.

unsafe_bucket_count

Bu kapsayıcıdaki geçerli demet sayısını döndürür.

size_type unsafe_bucket_count() const;

İade Değeri

Bu kapsayıcıdaki geçerli demet sayısı.

unsafe_bucket_size

Bu kapsayıcının belirli bir demetindeki öğelerin sayısını döndürür.

size_type unsafe_bucket_size(size_type _Bucket);

Parametreler

_Kova
Aranacak demet.

İade Değeri

Bu kapsayıcıdaki geçerli demet sayısı.

unsafe_cbegin

Belirli bir demet için bu kapsayıcıdaki ilk öğeye bir yineleyici döndürür.

const_local_iterator unsafe_cbegin(size_type _Bucket) const;

Parametreler

_Kova
Demet dizini.

İade Değeri

Demetin başına işaret eden bir yineleyici.

unsafe_cend

Belirli bir demetteki son öğenin başarılı olduğu konuma bir yineleyici döndürür.

const_local_iterator unsafe_cend(size_type _Bucket) const;

Parametreler

_Kova
Demet dizini.

İade Değeri

Demetin başına işaret eden bir yineleyici.

unsafe_end

Belirli bir demet için bu kapsayıcıdaki son öğeye bir yineleyici döndürür.

local_iterator unsafe_end(size_type _Bucket);

const_local_iterator unsafe_end(size_type _Bucket) const;

Parametreler

_Kova
Demet dizini.

İade Değeri

Demetin sonuna işaret eden bir yineleyici.

unsafe_erase

Belirtilen konumlarda öğesinden concurrent_unordered_map öğeleri kaldırır. Bu yöntem eşzamanlılık açısından güvenli değildir.

iterator unsafe_erase(
    const_iterator _Where);

iterator unsafe_erase(
    const_iterator _Begin,
    const_iterator _End);

size_type unsafe_erase(
    const key_type& KVal);

Parametreler

_Nerede
Silinecek yineleyici konumu.

_Başlamak
Silinecek öğe aralığındaki ilk öğenin konumu.

_Son -unda
İlk öğenin silinecek öğe aralığının ötesindeki konumu.

KVal
Silinecek anahtar değeri.

İade Değeri

İlk iki üye işlevi, kaldırılan öğelerin ötesinde kalan ilk öğeyi belirten bir yineleyici veya concurrent_unordered_map::endböyle bir öğe yoksa () döndürür. Üçüncü üye işlevi, kaldırmış olduğu öğe sayısını döndürür.

Açıklamalar

İlk üye işlevi tarafından _Whereişaret edilen denetlenen dizinin öğesini kaldırır. İkinci üye işlevi [ _Begin, _End) aralığındaki öğeleri kaldırır.

Üçüncü üye işlevi, (KVal) ile concurrent_unordered_map::equal_rangesınırlandırılan aralıktaki öğeleri kaldırır.

unsafe_max_bucket_count

Bu kapsayıcıdaki demet sayısı üst sınırını döndürür.

size_type unsafe_max_bucket_count() const;

İade Değeri

Bu kapsayıcıdaki demet sayısı üst sınırı.

Ayrıca bkz.

Eşzamanlılık Ad Alanı
Paralel Kapsayıcılar ve Nesneler