hash_set 類別
注意事項 |
---|
這個 API 已經過時。替代方案是 unordered_set 類別。 |
容器類別 hash_set 是 Standard Template Library (STL) 的副檔名和為資料儲存區和快速擷取項目的值是唯一且做為索引鍵值的集合使用。
template <
class Key,
class Traits=hash_compare<Key, less<Key> >,
class Allocator=allocator<Key>
>
class hash_set
參數
Key
在 hash_set 儲存項目的資料型別。Traits
包含兩個函式物件的類型,而是可以二進位的述詞比較兩個項目值做為排序鍵判斷其相對順序和雜湊函式是對應項目的索引鍵值一元的述詞對型別 size_t不帶正負號的整數的類別進行比較。 這個引數是選擇性的,因此, hash_compare*<索引鍵,* less*<索引鍵> >*是預設值。Allocator
代表儲存的配置器物件型別封裝詳細資料與記憶體的 hash_set 的配置和解除配置。 這個引數是選擇性的,因此,預設值為 allocator*<索引鍵>。*
備註
hash_set 如下:
關聯的容器,可變大小容器支援項目值是以關聯的索引鍵值有效的擷取。 此外,,因為其項目值為其索引鍵值,它是簡單的組合容器。
可逆轉的,因為它提供雙向的迭代器以存取其項目。
可雜湊的,因為它的項目是根據雜湊函式值的套用至雜湊桶元素的索引鍵值分組。
它的項目都必須具有唯一的索引鍵。 由於 hash_set 也是簡單的組合容器,其元素也是唯一的。
樣板類別,因為它提供的功能是泛型和很獨立的做為項目或索引鍵包含資料的特定型別。 套用至項目和索引鍵的資料型別,和比較函式和配置器一起被指定為類別樣板的參數。
雜湊的主要好處在排序是較大的效率;成功的雜湊中常數的平均時間執行插入、刪除和尋找時間比較比例與項目數目的對數容器中的排序方式。 不能直接變更項目的值在集合中。 相反地,您必須刪除舊值和插入與新值的元素。
選擇容器型別時,應根據應用程式所需的搜尋和插入的型別。 雜湊關聯的容器最適合進行搜尋、插入和移除作業。 明確支援這些作業的成員函式很有效率,當搭配設計完善的雜湊函式,執行它們在期間平均常數和不相依於項目數目的容器。 設計良好的雜湊函式產生雜湊值的制式散發並降低衝突數,此衝突發生於獨特索引鍵值會對應至相同雜湊值時。 在最壞的情況下,最壞的雜湊函式,作業數目與項目數目成正比順序 (線性時間)。
表示在關聯值的條件與其索引鍵由應用程式時,內容 hash_set 應該是相關的容器中。 hash_set 的項目是唯一以及當做自己的排序鍵。 這種結構的模型是文字可能只發生一次文字的已排序清單。 如果文字的多個事件允許,則 hash_multiset 是適當的容器結構。 如果值需要附加到唯一的關鍵字清單,則 hash_map 是包含這個資料的結構。 如果索引鍵不是唯一的,則 hash_multimap 是容器中。
它會藉由呼叫 value_compare型別所儲存的雜湊 Traits 物件控制的 hash_set 排序序列。 這個儲存物件可以透過呼叫成員函式 key_comp 存取。 這類函式物件必須正常運作的類別 *hash_compareKey 相同, lessKey<>>< 物件。*具體來說,,為了型別索引鍵的所有值 _Key ,呼叫特性 (_Key ) 產生 size_t 型別值的發行。
通常,項目必須是小於比較才能排序,因此若提供了兩個項目,可以判斷它們相等 (任一個都不小於另一個的意義),或者一個小於另一個。 這會導致在非對等元件之間的排序 在一個技術提示,比較函式是產生在標準數學概念的嚴格弱式順序的二元述詞。 二進位述詞 f(x,*y)*是具有兩個引數物件 x 和 y 和傳回值 True 或 False 的函式物件。 給 hash_set 安排順序是嚴格弱式順序,如果二進位述詞是非反身屬性,物件名稱以及成功,而且,如果等價是傳遞的,其中兩個物件的 x 和 y 定義相等,則兩個 f 時(x、*y)*和 f(x,y)是錯誤的。 如果索引鍵之間相等的更強狀況取代原本的相等,則該定序變得全部 (也就是所有項目的排序將有關於其他項目),因此相符索引鍵的項目與其他項目將難以辨別。
項目實際順序在受控制序列中取決於雜湊函式、排序函式及容器物件儲存的雜湊資料表的目前大小。 您無法判斷雜湊資料表的目前大小,因此,您無法預測一般項目順序是在受控制序列的。 插入項目不會使任何迭代器無效,移除項目則僅會使特別指向被移除的項目的迭代器無效。
hash_set 類別提供的 Iterator 是雙向 Iterator,不過,類別成員 插入 和 hash_set 函式會採用當做樣板參數較弱的輸入 Iterator,功能需要比雙向 Iterator 類別會確保的最小版本。 不同的迭代器概念因其功能的修改而有關聯性。 每個迭代器概念有自己的一組需求,因此,使用它們需要限制其假定對要求的演算法由該迭代器提供。 可能會假設輸入迭代器可能已取值參考物件的陣列,而且可能會加入至序列中的下一個迭代器。 這是最小的一組功能,不過,它是足夠可以有意義地溝通有關 Iterator [_First, _Last) 的範圍在類別成員函式中。
在 Visual C++ .NET 2003 中, <hash_map> 和 <hash_set> 標頭檔的成員不在 std 命名空間中,而是移至 stdext 命名空間。 如需詳細資訊,請參閱 stdext 命名空間。
建構函式
建構一個空的 hash_set,或者其他 hash_set 的全部或部分複本。 |
Typedef
表示hash_set 物件的allocator 類別。 |
|
提供雙向迭代器的類型可以讀取 hash_set 中的任何 const 項目。 |
|
提供 hash_set 中 const 項目之指標的類型。 |
|
類型,其提供儲存在 hash_set 中供讀取和執行 const 作業之 const 項目的參考。 |
|
提供雙向迭代器的類型可以讀取 hash_set 中的任何 const 項目。 |
|
可以用來表示 hash_set 之項目的數目在某個範圍的項目之間的帶正負號的整數類資料型別指向迭代器。 |
|
提供隨機存取雙向迭代器的型別,可以讀取或修改 hash_set 物件中的任何項目。 |
|
可比較兩個排序鍵以判斷兩個項目在 hash_set 中的相對順序的函式物件之型別。 |
|
描述做為其儲存為 hash_set 的元素物件排序索引鍵的型別。 |
|
提供 hash_set 中一個元素的指標。 |
|
提供 hash_set 中一個元素的參考。 |
|
提供隨機存取迭代器型別,可以讀取或修改 hash_set 物件中的任何項目。 |
|
可以表示 hash_set中的項目數不帶正負號的整數類資料型別。 |
|
提供兩個函式物件,類別比較二進位述詞可能比較 hash_set 的兩個項目值決定其相對順序和一元運算的述詞雜湊項目的型別。 |
|
描述做為其儲存為 hash_set 的元素物件值的型別。 |
成員函式
傳回處理 hash_set中的第一個項目的 Iterator。 |
|
傳回常數迭代器,為 hash_set 中的第一個項目定址。 |
|
傳回常數迭代器,為 hash_set 中最後一個項目的下一個位置定址。 |
|
清除 hash_set 的所有元素。 |
|
傳回 hash_set 的項目數其索引鍵符合參數。 |
|
傳回常數迭代器,為反轉 hash_set 中的第一個項目定址。 |
|
傳回常數迭代器,為反轉 hash_set 中最後一個項目的下一個位置定址。 |
|
將建構的項目插入 hash_set 中。 |
|
依放置提示,將建構的項目插入 hash_set 中。 |
|
測試,如果 hash_set 是空的。 |
|
傳回迭代器,為 hash_set 中最後一個項目的下一個位置定址。 |
|
傳回一組 Iterator 分別對應至 hash_set 的第一個項目與大於指定的按鍵和至 hash_set 的第一個項目具有等於或大於按鍵。 |
|
從指定的位置移除項目的範圍在 hash_set 的或移除符合指定之索引鍵的項目。 |
|
傳回迭代器有金鑰對應至指定索引鍵的項目hash_set 之位置的位址 。 |
|
傳回用來建構 hash_set 的 allocator 物件複本。 |
|
插入一個項目或某個範圍的項目至 hash_set。 |
|
擷取 hash_set用來命令索引值比較物件的複本。 |
|
傳回 Iterator 遞增至 hash_set 的第一個項目具有等於或大於指定之索引鍵的索引鍵。 |
|
傳回 hash_set 的最大長度 |
|
傳回迭代器,指向反轉 hash_set 中的第一個項目。 |
|
傳回迭代器,為反轉 hash_set 中最後一個項目的下一個位置定址。 |
|
傳回 hash_set 的元素數目。 |
|
交換兩個 hash_set 的元素。 |
|
傳回 Iterator 置於與索引鍵等於或大於指定之索引鍵的 hash_set 的第一個項目。 |
|
擷取雜湊特性的複製物件用來雜湊和排序 hash_set中的元素索引鍵值。 |
運算子
用另一個 hash_set 的複本取代 hash_set 的元素。 |
需求
標頭: <hash_set>
**命名空間:**stdext