std::flat_multiset
在標頭檔案 <flat_set> 中定義 |
||
template< class Key, |
(C++23 起) | |
flat_multiset 是一種容器介面卡,它提供關聯容器的功能,儲存型別為 Key
的有序物件集。與 std::flat_set 不同,它允許具有等效值的多個鍵。排序使用鍵比較函式 Compare
完成。
類模板 flat_multiset
作為對型別為 KeyContainer
的底層有序容器的包裝器。
標準庫使用 Compare 要求的地方,唯一性透過等價關係確定。非正式地,如果兩個物件 a 和 b 互不小於對方,則認為它們是等價的:!comp(a, b) && !comp(b, a)。
std::flat_multiset
滿足 Container、ReversibleContainer、可選容器要求以及 AssociativeContainer 的所有要求(包括對數搜尋複雜度),除了
- 與節點相關的要求不適用,
- 迭代器失效要求不同,
- 插入和擦除操作的複雜度是線性的。
flat_multiset 支援大部分使用等價鍵的 AssociativeContainer 操作。
|
(C++26 起) |
目錄 |
[編輯] 迭代器失效
本節不完整 |
[編輯] 模板引數
Key | - | 儲存元素的型別。如果 Key 與 KeyContainer::value_type 不是同一型別,則程式格式錯誤。 |
Compare | - | 提供嚴格弱排序的 Compare 型別。 |
KeyContainer | - | 用於儲存元素的底層 SequenceContainer 型別。此類容器的迭代器應滿足 LegacyRandomAccessIterator 或實現 random_access_iterator 。標準容器 std::vector 和 std::deque 滿足這些要求。 |
[編輯] 成員型別
型別 | 定義 |
container_type
|
Key Container |
key_type
|
Key |
value_type
|
Key |
key_compare
|
Compare |
value_compare
|
Compare |
reference
|
value_type& |
const_reference
|
const value_type& |
size_type
|
typename KeyContainer::size_type |
difference_type
|
typename KeyContainer::difference_type |
iterator
|
實現定義的 LegacyRandomAccessIterator,ConstexprIterator(C++26 起) 和 random_access_iterator 到 value_type |
const_iterator
|
實現定義的 LegacyRandomAccessIterator,ConstexprIterator(C++26 起) 和 random_access_iterator 到 const value_type |
reverse_iterator
|
std::reverse_iterator<iterator> |
const_reverse_iterator
|
std::reverse_iterator<const_iterator> |
[編輯] 成員物件
成員 | 描述 |
container_type c (私有) |
被適配的容器 (僅用於闡釋的成員物件*) |
key_compare compare (私有) |
比較函式物件 (僅用於闡釋的成員物件*) |
[編輯] 成員函式
構造 flat_multiset (公有成員函式) | |
(解構函式) (隱式宣告) |
銷燬容器介面卡的每個元素 (公開成員函式) |
向容器介面卡賦值 (公有成員函式) | |
迭代器 | |
返回指向起始的迭代器 (公有成員函式) | |
返回指向末尾的迭代器 (公有成員函式) | |
返回指向起始的逆向迭代器 (公有成員函式) | |
返回指向末尾的逆向迭代器 (公有成員函式) | |
容量 | |
檢查容器介面卡是否為空 (公有成員函式) | |
返回元素數量 (公有成員函式) | |
返回元素的最大可能數量 (公有成員函式) | |
修改器 | |
就地構造元素 (公有成員函式) | |
使用提示就地構造元素 (公有成員函式) | |
插入元素 (公有成員函式) | |
插入元素範圍 (公有成員函式) | |
提取底層容器 (公有成員函式) | |
替換底層容器 (公有成員函式) | |
擦除元素 (公有成員函式) | |
交換內容 (公有成員函式) | |
清除內容 (公有成員函式) | |
查詢 | |
查詢具有特定鍵的元素 (公有成員函式) | |
返回匹配特定鍵的元素數量 (公有成員函式) | |
檢查容器是否包含具有特定鍵的元素 (公有成員函式) | |
返回指向第一個不小於給定鍵的元素的迭代器 (公有成員函式) | |
返回指向第一個大於給定鍵的元素的迭代器 (公有成員函式) | |
返回與特定鍵匹配的元素範圍 (公有成員函式) | |
觀察器 | |
返回比較鍵的函式 (公有成員函式) | |
返回比較 value_type 型別物件中的鍵的函式(公有成員函式) |
[編輯] 非成員函式
(C++23) |
按字典序比較兩個 flat_multiset 的值(函式模板) |
特化 std::swap 演算法 (函式模板) | |
(C++23) |
擦除所有滿足特定標準的元素 (函式模板) |
[編輯] 輔助類
特化 std::uses_allocator 型別特性 (類模板特化) |
[編輯] 標籤
表示範圍的元素已排序(不要求唯一性) (標籤) |
[編輯] 推導指南
[編輯] 注意
成員型別 iterator
和 const_iterator
可以是相同型別的別名。這意味著使用這兩種型別作為引數型別定義一對函式過載可能違反單一定義規則。由於 iterator
可以轉換為 const_iterator
,因此單個函式使用 const_iterator
作為引數型別即可。
特性測試宏 | 值 | 標準 | 特性 |
---|---|---|---|
__cpp_lib_flat_set |
202207L |
(C++23) | std::flat_set 和 std::flat_multiset |
__cpp_lib_constexpr_containers |
202502L |
(C++26) | constexpr std::flat_multiset |
[編輯] 示例
本節不完整 原因:無示例 |
[編輯] 參見
(C++23) |
適配容器以提供唯一鍵的集合,按鍵排序 (類模板) |
鍵的集合,按鍵排序 (類模板) | |
(C++11) |
鍵的集合,按鍵雜湊 (類模板) |