Share via


hash_set Class

注意事項注意事項

這個 API 已經過時。這個選項是 unordered_set Class

容器類別 hash_set 是標準樣板程式庫 (STL) 的副檔名為資料儲存區和快速擷取從包含項目的值是唯一以及當做索引鍵值的集合使用。

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

參數

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

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

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

備註

hash_set 如下:

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

  • 雙面布料,,因為它提供雙向 Iterator 存取其項目。

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

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

  • 樣板類別,因為它提供的功能是泛型,因此資料的特定型別的獨立做為項目或包含的索引鍵。 為項目和金鑰之資料型別,而是,,指定參數在類別樣板與比較函式和配置器。

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

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

表示在關聯值的條件與其索引鍵由應用程式時,內容 hash_set 應該是結合紙匣選項。 hash_set 的項目是唯一以及當做自己的排序鍵。 這種結構的模型是 Word 可能只發生一次 Word 的已排序清單。 如果 Word 的多個項目上,則 hash_multiset 是適當的容器結構。 如果值需要附加到唯一索引鍵動詞命令清單, hash_map 則是包含這些資料的適當的結構。 如果索引鍵不是唯一的,則為 hash_multimap 紙匣選項。

它會呼叫型別 value_compare儲存的雜湊 Traits 物件控制的 hash_set 排序序列。 這個儲存物件可以透過呼叫成員函式存取 key_comp。 這類函式物件必須一般作業的類別*hash_compareKey<相同, less<Key>物件>。*具體來說,,為了型別索引鍵的所有值 _Key ,呼叫標記 (_Key ) 產生 size_t 型別值的發行。

一般來說,項目只會比較需要建立順序如下:因此將任兩個項目,可以判斷為它們相等 (所以都比其他不小於) 或一個小於另一個。 這會導致在聯結後產生非對等的項目之間。 在一個 Technical Note,比較函式是造成嚴格弱式順序在標準數學概念的二進位述詞。 二進位述詞 f(x,*y)*是具有兩個引數物件 x 和 y 和傳回值 true 或 false 的函式物件。 給 hash_set 施加的順序是嚴格弱式排序受二進位述詞是否 irreflexive,物件名稱和傳遞的,且相等是否可轉移的,其中兩個物件 xy 定義相等,則兩個時( fx、*y)*和 ( fxy)是錯誤的。 如果相等的更強的情況在索引鍵間的相等,則取代該順序變成總數 (也就是將所有項目排序關於彼此),且相符索引鍵彼此會很難識別類別的。

項目實際順序在受控制序列的取決於雜湊函式、排序函式及容器是儲存在雜湊資料表的目前大小。 您無法判斷雜湊資料表的目前大小,因此,您無法預測一般項目順序受控制序列的。 插入項目不會失效, Iterator,並移除項目失效特別會在移除的後面的項目僅 Iterator。

hash_set 類別提供的 Iterator 是雙向 Iterator,不過,類別成員函式 插入hash_set 有接受當做樣板參數較弱的輸入 Iterator,功能需要比雙向 Iterator 類別保證的最小版本。 不同的 Iterator 概念形成在其功能的精簡關係的家族。 每個 Iterator 概念有自己的一組需求,,並使用它們需要限制其假定對要求的演算法由那個 Iterator 提供了。 可能會假設,輸入 Iterator 可能已取值參考物件的陣列,而且可能會加入至序列中的下一個 Iterator。 這是最小的一組功能,不過,它是足夠可以有意義地溝通有關 [_FirstIterator, _Last) 的範圍在類別成員函式中。

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

1t4xas78.collapse_all(zh-tw,VS.110).gif建構函式

hash_set

建構是空的或為其他 hash_set全部或部分的複本的 hash_set

1t4xas78.collapse_all(zh-tw,VS.110).gifTypedef

allocator_type

表示 hash_set 物件的 allocator 類別的型別。

const_iterator

提供雙向 Iterator 可讀取 hash_set的一個 const 元素的型別。

const_pointer

提供指標給在 hash_set的一個 const 元素的型別。

const_reference

提供對 const 項目之參考的型別在讀取及執行 const 作業 hash_set 儲存。

const_reverse_iterator

提供雙向 Iterator 可讀取 hash_set的所有 const 元素的型別。

difference_type

可以用來表示 hash_set 的元素數目一個範圍的項目之間的帶正負號的整數型別指向的 Iterator。

Iterator

提供雙向 Iterator 可讀取或修改 hash_set的所有項目的型別。

key_compare

提供函式物件可比較兩個排序鍵判斷兩個項目的相對順序。 hash_set的型別。

key_type

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

pointer

提供指標給在 hash_set的項目型別。

參照

提供項目參考的型別。 hash_set儲存。

reverse_iterator

提供雙向 Iterator 可讀取或修改反轉 hash_set的項目型別。

size_type

可以表示項目數。 hash_set的不帶正負號的整數型別。

value_compare

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

value_type

描述做為其儲存為 hash_set 項目物件值的型別。

1t4xas78.collapse_all(zh-tw,VS.110).gif成員函式

begin

傳回定址。 hash_set的第一個項目的 Iterator。

hash_set::cbegin

傳回 const 定址的 Iterator。 hash_set的第一個項目。

hash_set::cend

傳回處理成功最後一個項目位置 hash_setconst 的 Iterator。

clear

清除 hash_set的所有項目。

count

傳回項目數索引鍵符合參數指定索引鍵的 hash_set 的。

hash_set::crbegin

傳回 const 定址 Iterator 在反轉 hash_set的第一個項目。

hash_set::crend

傳回處理成功最後一個項目位置顛倒的 hash_setconst 的 Iterator。

hash_set::emplace

插入建構的項目就地入 hash_set

hash_set::emplace_hint

插入建構的項目就地入 hash_set,具有位置提示。

empty

測試,如果 hash_set 是空的。

end

傳回處理成功最後一個項目位置 hash_set的 Iterator。

equal_range

傳回一組 Iterator 分別對在 hash_set 的第一個項目與指定的索引鍵大於的金鑰以及 hash_set 的第一個項目具有等於或大於按鍵。

清除

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

find

傳回位址的 Iterator 有索引鍵等於之指定索引鍵之項目的位置。 hash_set 的。

get_allocator

傳回用來 allocator 物件的複製建構 hash_set

插入

插入項目或某個範圍的 hash_set

key_comp

擷取在 hash_set用來解析順序索引鍵比較物件的複本。

lower_bound

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

max_size

傳回 hash_set的最大長度。

rbegin

傳回位址的 Iterator 在反轉 hash_set的第一個項目。

rend

傳回處理成功最後一個項目位置顛倒的 hash_set的 Iterator。

size

傳回項目的數目。 hash_set的。

互換

交換兩 hash_sets. 的項目。

upper_bound

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

value_comp

擷取雜湊簽章的物件複本。用來雜湊和排序 hash_set的元素索引鍵值。

1t4xas78.collapse_all(zh-tw,VS.110).gif運算子

hash_set::operator=

用另一 hash_set的複本來取代 hash_set 的項目。

需求

標題: <hash_set>

命名空間: stdext

請參閱

參考

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

標準樣板程式庫

其他資源

<hash_set> 成員

hash_set 成員