共用方式為


hash_multiset 類別

注意事項注意事項

這個 API 已經過時。替代方案是 unordered_multiset 類別

容器類別 hash_multiset 是標準樣板程式庫的副檔名和為資料儲存區和快速擷取項目包含做為值的機碼值並不一定是唯一的集合使用。

template < 
   class Key,  
   class Traits=hash_compare<Key, less<Key> >,  
   class Allocator=allocator<Key>  
> 
class hash_multiset

參數

  • Key
    在 hash_multiset 儲存項目的資料型別。

  • Traits
    包含兩個函式物件的類型,而是可以二進位的述詞比較兩個項目值做為排序鍵判斷其相對順序和雜湊函式是對應項目的索引鍵值一元的述詞對型別 size_t不帶正負號的整數的類別進行比較。 這個引數是選擇性的,因此, hash_compare*<索引鍵,* less*<索引鍵> >*是預設值。

  • Allocator
    代表儲存的配置器物件型別封裝詳細資料與記憶體的 hash_multiset 的配置和解除配置。 這個引數是選擇性的,因此,預設值為 allocator*<索引鍵>。*

備註

hash_multiset 如下:

  • 關聯的容器,可變大小容器支援項目值是以關聯的索引鍵值有效的擷取。 此外,,因為其項目值為其索引鍵值,它是簡單的組合容器。

  • 可逆轉的,因為它提供雙向的迭代器以存取其項目。

  • 可雜湊的,因為它的項目是根據雜湊函式值的套用至雜湊桶元素的索引鍵值分組。

  • 它的項目都必須具有唯一的索引鍵。 由於 hash_multiset 也是簡單的組合容器,其元素也是唯一的。

  • 樣板類別,因為它提供的功能是泛型和很獨立的做為項目或索引鍵包含資料的特定型別。 套用至項目和索引鍵的資料型別,和比較函式和配置器一起被指定為類別樣板的參數。

雜湊的主要好處在排序是較大的效率:成功的雜湊中常數的平均時間執行 INSERT、DELETE 和尋找時間比較比例與項目數目的對數容器中的排序方式。 不能直接變更項目的值在集合中。 相反地,您必須刪除舊值和插入與新值的元素。

選擇容器型別時,應根據應用程式所需的搜尋和插入的型別。 雜湊關聯的容器最適合進行搜尋、插入和移除作業。 明確支援這些作業的成員函式很有效率,當搭配設計完善的雜湊函式,執行它們在期間平均常數和不相依於項目數目的容器。 設計良好的雜湊函式產生雜湊值的制式散發並降低衝突數,此衝突發生於獨特索引鍵值會對應至相同雜湊值時。 在最壞的情況下,最壞的雜湊函式,作業數目與項目數目成正比順序 (線性時間)。

表示在關聯值的條件與其金鑰是由應用程式時,內容 hash_multiset 應該是相關的容器中。 hash_multiset 的項目可能是多以及當做自己的排序鍵,因此,索引鍵不是唯一的。 這種結構的模型是文字可以多次發生文字的已排序清單。 文字的多個事件,不允許然後 hash_set 將是適當的容器結構。 如果唯一定義附加做為唯一的關鍵字清單中的值,則 hash_map 是包含這個資料的結構。 如果定義不是唯一的,則 hash_multimap 是容器中。

它會藉由呼叫 value_compare型別所儲存的雜湊特性物件控制項的 hash_multiset 排序序列。 這個儲存物件可以透過呼叫成員函式 key_comp 存取。 這類函式物件必須正常運作的類別 hash_compare*<索引鍵相同,* less*<索引鍵> >*物件。具體來說,,為了型別 Key中所有值的 索引鍵 ,呼叫 Trait(Key) 產生型別 size_t值的發行。

通常,項目必須是小於比較才能排序,因此若提供了兩個項目,可以判斷它們相等 (任一個都不小於另一個的意義),或者一個小於另一個。 這會導致在非對等元件之間的排序 在一個技術提示,比較函式是產生在標準數學概念的嚴格弱式順序的二元述詞。 二進位述詞 f(x,*y)*是具有兩個引數物件 x 和 y 和傳回值 True 或 False 的函式物件。 將 hash_multiset 安排順序是嚴格弱式順序,如果二進位述詞是非反身屬性,物件名稱以及成功,而且,如果等價是傳遞的,其中兩個物件的 x 和 y 定義相等,則兩個 f 時(x、*y)*和 f(xy)是錯誤的。 如果索引鍵之間相等的更強狀況取代原本的相等,則該定序變得全部 (也就是所有項目的排序將有關於其他項目),因此相符索引鍵的項目與其他項目將難以辨別。

項目實際順序在受控制序列中取決於雜湊函式、排序函式及容器物件儲存的雜湊資料表的目前大小。 您無法判斷雜湊資料表的目前大小,因此,您無法預測一般項目順序是在受控制序列的。 插入項目不會使任何迭代器無效,移除項目則僅會使特別指向被移除的項目的迭代器無效。

hash_multiset 類別提供的 Iterator 是雙向 Iterator,不過,類別成員 插入hash_multiset 函式會採用當做樣板參數較弱的輸入 Iterator,功能需要比雙向 Iterator 類別會確保的最小版本。 不同的迭代器概念因其功能的修改而有關聯性。 每個 Iterator 概念有要求它的 hash_multiset,,並使用它們需要限制其假定對要求的演算法由該 Iterator 提供了。 可能會假設輸入迭代器可能已取值參考物件的陣列,而且可能會加入至序列中的下一個迭代器。 這是功能的最小 hash_multiset,不過,它是足夠可以有意義地溝通有關 Iterator [_First, _Last) 的範圍在類別成員函式中。

在 Visual C++ .NET 2003 中, <hash_map><hash_set> 標頭檔的成員不在 std 命名空間中,而是移至 stdext 命名空間。 如需詳細資訊,請參閱 stdext 命名空間

建構函式

hash_multiset

建構一個空的hash_multiset ,或者建構為其他全部、部份複製的hash_multiset

Typedef

allocator_type

表示hash_multiset 物件的allocator 類別。

const_iterator

提供雙向迭代器的類型可以讀取 hash_multiset 中的任何 const 項目。

const_pointer

提供 hash_multiset 中 const 項目之指標的類型。

const_reference

類型,其提供儲存在 hash_multiset 中供讀取和執行 const 作業之 const 項目的參考。

const_reverse_iterator

提供雙向迭代器的類型可以讀取 hash_multiset 中的任何 const 項目。

difference_type

提供兩個 Iterator 之間的差別解決相同 hash_multiset內的項目的帶正負號的整數類資料型別。

Iterator

提供隨機存取雙向迭代器的型別,可以讀取或修改 hash_multiset 物件中的任何項目。

key_compare

可比較兩個排序鍵以判斷兩個項目在 hash_multiset 中的相對順序的函式物件之型別。

key_type

描述做為其儲存為 hash_set 的元素物件排序索引鍵的型別。

指標

提供 hash_multiset 中一個元素的指標。

參照

提供 hash_multiset 中一個元素的參考。

reverse_iterator

提供隨機存取迭代器型別,可以讀取或修改 hash_multiset 物件中的任何項目。

size_type

可以表示 hash_multiset中的項目數不帶正負號的整數類資料型別。

value_compare

提供兩個函式物件,類別比較二進位述詞可能比較 hash_multiset 的兩個項目值決定其相對順序和一元運算的述詞雜湊項目的型別。

value_type

描述做為其儲存為 hash_multiset 的元素物件值的型別。

成員函式

begin

傳回處理 hash_multiset中的第一個項目的 Iterator。

hash_multiset::cbegin

傳回常數迭代器,為 hash_multiset 中的第一個項目定址。

hash_multiset::cend

傳回常數迭代器,為 hash_multiset 中最後一個項目的下一個位置定址。

clear

清除 hash_multiset 的所有元素。

count

傳回項目數索引鍵符合參數所指定的索引鍵的 hash_multiset

hash_multiset::crbegin

傳回常數迭代器,為反轉 hash_multiset 中的第一個項目定址。

hash_multiset::crend

傳回常數迭代器,為反轉 hash_multiset 中最後一個項目的下一個位置定址。

hash_multiset::emplace

將建構的項目插入 hash_multiset 中。

hash_multiset::emplace_hint

依放置提示,將建構的項目插入 hash_multiset 中。

empty

測試,如果 hash_multiset 是空的。

end

傳回迭代器,為 hash_multiset 中最後一個項目的下一個位置定址。

equal_range

傳回一組 Iterator 分別對應至 hash_multiset 的第一個項目與大於指定的按鍵和至 hash_multiset 的第一個項目具有等於或大於按鍵。

清除

從指定的位置移除項目的範圍在 hash_multiset 的或移除符合指定之索引鍵的項目。

find

傳回迭代器有金鑰對應至指定索引鍵的項目hash_multiset 之位置的位址 。

get_allocator

傳回用來建構 hash_multisetallocator 物件複本。

插入

插入項目或某個範圍至 hash_multiset

key_comp

擷取 hash_multiset用來命令索引值比較物件的複本。

lower_bound

傳回 Iterator 遞增至 hash_multiset 的第一個項目具有等於或大於指定之索引鍵的索引鍵。

max_size

傳回 hash_multiset 的最大長度

rbegin

傳回迭代器,指向反轉 hash_multiset 中的第一個項目。

rend

傳回迭代器,為反轉 hash_multiset 中最後一個項目的下一個位置定址。

size

傳回 hash_multiset 的元素數目。

交換

交換兩個 hash_multiset 的元素。

upper_bound

傳回 Iterator 置於與索引鍵等於或大於指定之索引鍵的 hash_multiset 的第一個項目。

value_comp

擷取雜湊特性的複製物件用來雜湊和排序 hash_multiset中的元素索引鍵值。

運算子

hash_multiset::operator=

用另一個 hash_multiset 的複本取代 hash_multiset 的元素。

需求

標頭: <hash_set>

**命名空間:**stdext

請參閱

參考

C++ 標準程式庫中的執行緒安全

標準樣板程式庫

其他資源

<hash_set> 成員

hash_multiset 成員