set (STL/CLR)
樣板類別描述一個物件,其控制一個可雙向存取項目的變更長度序列。 您使用容器 set 處理項目序列,做為 (幾乎) 平衡且排序的樹,其每個節點儲存一個項目。
在如下解譯, GValue 與 GKey,而 Key 相同,除非後面是參考型別,在這種情況下,它是 Key^的情況下。
template<typename Key>
ref class set
: public
System::ICloneable,
System::Collections::IEnumerable,
System::Collections::ICollection,
System::Collections::Generic::IEnumerable<GValue>,
System::Collections::Generic::ICollection<GValue>,
System::Collections::Generic::IList<GValue>,
Microsoft::VisualC::StlClr::ITree<Gkey, GValue>
{ ..... };
參數
- Key
受控制序列中項目的主要元件型別。
成員
型別定義 |
說明 |
---|---|
用於受控制序列的常數迭代器類型。 |
|
項目的常數參考類型。 |
|
用於受控制序列的常數反向迭代器型別。 |
|
兩個項目之間的 (可能帶正負號) 距離的型別。 |
|
容器的泛型介面的型別。 |
|
容器的泛型介面的迭代器的型別。 |
|
容器的泛型介面的反向迭代器的型別。 |
|
容器的泛型介面的元素的型別。 |
|
受控制序列中 iterator 的類型。 |
|
兩個金鑰的排序委派。 |
|
排序索引鍵的類型。 |
|
項目的參考類型。 |
|
用於受控制序列的反向迭代器型別。 |
|
兩個項目之間的 (非負數) 距離的型別。 |
|
兩個項目值的排序委派。 |
|
項目的類型。 |
成員函式 |
說明 |
---|---|
指定受控制序列的開頭。 |
|
移除所有項目。 |
|
計算符合指定索引鍵的項目。 |
|
測試是否不存在項目。 |
|
指定受控制序列的結尾。 |
|
尋找符合指定索引鍵的範圍。 |
|
移除指定位置的項目。 |
|
尋找符合指定之索引鍵的項目。 |
|
加入項目。 |
|
為兩個金鑰複製排序委派。 |
|
尋找符合指定索引鍵的範圍之開頭。 |
|
建構一個值物件。 |
|
指定已還原的受控制序列開頭。 |
|
指定已還原的受控制序列結尾。 |
|
建構一個容器物件。 |
|
計數項目的數目。 |
|
交換兩個容器的內容。 |
|
複製受控制序列至新陣列。 |
|
尋找符合指定索引鍵的範圍之結尾。 |
|
複製兩個項目值的排序委派。 |
運算子 |
說明 |
---|---|
取代受控制序列。 |
|
判斷 set 物件是否不等於另一個 set 物件。 |
|
判斷 set 物件是否小於另一個 set 物件。 |
|
判斷 set 物件是否小於或等於另外一個 set 物件。 |
|
判斷 set 物件是否等於另一個 set 物件。 |
|
判斷 set 物件是否大於另一個 set 物件。 |
|
判斷 set 物件是否大於或等於另外一個 set 物件。 |
介面
介面 |
說明 |
---|---|
複製物件。 |
|
序列傳遞項目。 |
|
維護項目的群組。 |
|
序列傳遞型別項目。 |
|
維護型別項目的群組。 |
|
ITree<Key, Value> |
維護泛型容器。 |
備註
物件配置和釋放其控制的序列之記憶體區域,如同個別的節點。 它會將項目插入 (幾乎) 平衡的樹狀結構,以修改節點之間的連結 (而非複製節點的內容至另一個節點) 來保持排序。 這表示您可以自由地插入和移除項目,而不會干擾其他項目。
它會藉由呼叫 set::key_compare (STL/CLR)型別所儲存的委派物件控制物件的排序序列。 在建構組時,您可以指定儲存委派物件;如果您不指定委派物件,預設為比較 operator<(key_type, key_type)。 您可以呼叫成員函式存取這個儲存物件的()set::key_comp (STL/CLR)。
這類委派物件必須實行嚴格弱式順序在 set::key_type (STL/CLR) 型別的索引鍵上。 這表示,對於任何兩個索引鍵的 X 和 Y:
key_comp()(X, Y) 會在每次呼叫時傳回相同的布林值結果。
如果 key_comp()(X, Y) 為 true,則 key_comp()(Y, X) 必須為 false。
如果 key_comp()(X, Y) 為 true,則 X 會在 Y 之前排序。
如果 !key_comp()(X, Y) && !key_comp()(Y, X) 為 true,則 X 和 Y 會有相等排序。
對於在受控制序列中任何在 Y 之前的項目 X, key_comp()(Y, X) 會是 false。(預設委派物件的金鑰值永遠不會減少。)不同於樣板類別 set (STL/CLR),樣板類別 set 物件不需要所有項目的索引鍵是唯一的。(兩個以上的索引鍵可能有相等的排序。)
每個項目做為索引鍵和值。 序列顯示的方式允許以和序列中 (對數時間) 項目數的對數成比例的作業數目,進行搜尋、插入和移除一個任意的項目。 而且,插入項目不會使迭代器失效,而移除項目只會使指向移除項目的迭代器失效。
集合支援雙向 Iterator,這表示您可以逐步執行至指定的相鄰項目的 Iterator 在受控制序列的項目。 特殊前端節點對應於 set::end (STL/CLR)所傳回的 Iterator()。 如果存在,您可以這個迭代器到達受控制序列的最後一個項目。 您可以將集合 Iterator 到達前端節點,因此,它與 end()會比較相等。 但是,您無法對 end() 傳回的迭代器取值。
請注意您無法直接參考指定的集合元素其數值位置--該要求隨機存取 Iterator。
集合中儲存的控制代碼關聯的集合節點,接著儲存的控制代碼關聯的容器。 您只能將迭代器與其關聯的容器物件一起使用。 只要其關聯的集合節點與某一集合保持存在,集合 Iterator 有效 。 而且,有效迭代器是可取值的,您可以使用它存取或替換它指派的值,只要不等於 end()。
清除或移除元素會呼叫它的儲存值的解構函式。 終結容器清除所有項目。 因此,項目型別是 ref 類別的容器會確保沒有項目的存在時間比容器久。 然而,請注意控制碼的容器使用 not 終結其項目。
需求
標頭: <cliext/set>
命名空間: cliext