std::flat_multiset<Key,Compare,KeyContainer>::flat_multiset
flat_multiset() : flat_multiset(key_compare()) { } |
(1) | (C++23 起) |
template< class Allocator > flat_multiset( const flat_multiset& other, const Allocator& alloc ); |
(2) | (C++23 起) |
template< class Allocator > flat_multiset( flat_multiset&& other, const Allocator& alloc ); |
(3) | (C++23 起) |
explicit flat_multiset( container_type cont, const key_compare& comp = key_compare() ); |
(4) | (C++23 起) |
template< class Allocator > flat_multiset( const container_type& cont, const Allocator& alloc ); |
(5) | (C++23 起) |
template< class Allocator > flat_multiset( const container_type& cont, const key_compare& comp, |
(6) | (C++23 起) |
flat_multiset( std::sorted_equivalent_t s, container_type cont, const key_compare& comp = key_compare() ) |
(7) | (C++23 起) |
template< class Allocator > flat_multiset( std::sorted_equivalent_t s, const container_type& cont, |
(8) | (C++23 起) |
template< class Allocator > flat_multiset( std::sorted_equivalent_t s, const container_type& cont, |
(9) | (C++23 起) |
explicit flat_multiset( const key_compare& comp ) : c(), compare(comp) { } |
(10) | (C++23 起) |
template< class Allocator > flat_multiset( const key_compare& comp, const Allocator& alloc ); |
(11) | (C++23 起) |
template< class Allocator > explicit flat_multiset( const Allocator& alloc ); |
(12) | (C++23 起) |
template< class InputIter > flat_multiset( InputIter first, InputIter last, |
(13) | (C++23 起) |
template< class InputIter, class Allocator > flat_multiset( InputIter first, InputIter last, |
(14) | (C++23 起) |
template< class InputIter, class Allocator > flat_multiset( InputIter first, InputIter last, const Allocator& alloc ); |
(15) | (C++23 起) |
template< container-compatible-range<value_type> R > flat_multiset( std::from_range_t, R&& rg, const key_compare& comp ) |
(16) | (C++23 起) |
template< container-compatible-range<value_type> R > flat_multiset( std::from_range_t fr, R&& rg ) |
(17) | (C++23 起) |
template< container-compatible-range<value_type> R, class Allocator > flat_multiset( std::from_range_t, R&& rg, const Allocator& alloc ); |
(18) | (C++23 起) |
template< container-compatible-range<value_type> R, class Allocator > flat_multiset( std::from_range_t, R&& rg, const key_compare& comp, |
(19) | (C++23 起) |
template< class InputIter > flat_multiset( std::sorted_equivalent_t s, InputIter first, InputIter last, |
(20) | (C++23 起) |
template< class InputIter, class Allocator > flat_multiset( std::sorted_equivalent_t s, InputIter first, InputIter last, |
(21) | (C++23 起) |
template< class InputIter, class Allocator > flat_multiset( std::sorted_equivalent_t s, InputIter first, InputIter last, |
(22) | (C++23 起) |
flat_multiset( std::initializer_list<value_type> init, const key_compare& comp = key_compare() ) |
(23) | (C++23 起) |
template< class Allocator > flat_multiset( std::initializer_list<value_type> init, const key_compare& comp, |
(24) | (C++23 起) |
template< class Allocator > flat_multiset( std::initializer_list<value_type> init, const Allocator& alloc ); |
(25) | (C++23 起) |
flat_multiset( std::sorted_equivalent_t s, std::initializer_list<value_type> init, const key_compare& comp = key_compare() ) |
(26) | (C++23 起) |
template< class Allocator > flat_multiset( std::sorted_equivalent_t s, std::initializer_list<value_type> init, |
(27) | (C++23 起) |
template< class Allocator > flat_multiset( std::sorted_equivalent_t s, std::initializer_list<value_type> init, |
(28) | (C++23 起) |
从各种数据源构造新的容器适配器,可选地使用用户提供的比较函数对象 comp 或分配器 alloc。
[
first,
last)
的内容构造容器适配器,等价于 insert(first, last);。针对重载 (13-15,20-22) 的注解:如果 [
first,
last)
不是有效范围,则行为未定义。
分配器用法注解
构造函数 (2,3,5,6,8,9,11,12,14,15,17,19,21,22,24,25,27,28) 等价于对应的无分配器构造函数,但 c
采用使用分配器构造。
仅当 std::uses_allocator_v<container_type, Allocator> 为 true 时,这些重载才参与重载决议。
参数
cont | - | 用作初始化底层容器的来源的容器 |
other | - | 用作容器元素初始化的来源的另一个 flat_multiset
|
alloc | - | 用于这个容器适配器的所有内存分配的分配器 |
comp | - | 用于所有的键比较的比较函数对象 |
first, last | - | 要从之复制元素的范围 |
init | - | 初始化式列表,用于初始化容器适配器的元素 |
rg | - | 容器兼容范围(即元素可以转换为 value_type 的 input_range ),用作初始化底层容器的来源
|
fr | - | 区分标签,指示所包含的成员应当按范围构造 |
s | - | 区分标签,指示输入序列根据 compare 有序
|
类型要求 | ||
-InputIt 必须满足老式输入迭代器 (LegacyInputIterator) 。
| ||
-Compare 必须满足比较 (Compare) 。
| ||
-Allocator 必须满足分配器 (Allocator) 。
|
复杂度
[
first,
last)
按 compare 有序时与 N 成线性,否则为 𝓞(N·log(N)),其中 N 是此次调用前 cont.size() 的值。[
first,
last)
的大小成线性。异常
调用 Allocator::allocate
可能抛出异常。
注解
在容器移动构造(重载 (3,16-19))后,指向 other 的引用及迭代器(除了尾迭代器)保持合法,但将指代现于 *this 中的元素。当前标准由 [container.requirements.general]/12 中的总括陈述作出此保证,而 LWG 问题 2321 正在考虑更严格的保证。
示例
本节未完成 原因:暂无示例 |
参阅
将值赋给容器适配器 (公开成员函数) |