std::priority_queue<T,Container,Compare>:: push_range
|
template
<
container-compatible-range
<
value_type
>
R
>
void push_range ( R && rg ) ; |
(C++23 起) | |
将
rg
的每个元素副本插入到
priority_queue
中,操作方式相当于:
-
c.
append_range
(
std::
forward
<
R
>
(
rg
)
)
如果这是一个有效表达式(即底层容器
c
具有相应的
append_range成员函数),或者 - ranges:: copy ( rg, std:: back_inserter ( c ) ) 否则。
然后恢复堆属性,如同执行 ranges:: make_heap ( c, comp ) 。插入操作后 ranges:: is_heap ( c, comp ) 为 true 。
范围内的每个迭代器 rg 都会被精确解引用一次。
目录 |
参数
| rg | - |
一个
容器兼容范围
,即其元素可转换为
T
的
input_range
|
复杂度
c. append_range 的复杂度加上 ranges:: make_heap ( c, comp ) 的复杂度。
注释
| 功能测试 宏 | 值 | 标准 | 功能特性 |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | 支持范围 的构造与插入操作 |
示例
#include <initializer_list> #include <queue> #include <version> #ifdef __cpp_lib_format_ranges #include <print> using std::println; #else #define FMT_HEADER_ONLY #include <fmt/ranges.h> using fmt::println; #endif int main() { std::priority_queue<int> adaptor; const auto rg = {1, 3, 2, 4}; #ifdef __cpp_lib_containers_ranges adaptor.push_range(rg); #else for (int e : rg) adaptor.push(e); #endif println("{}", adaptor); }
输出:
[4, 3, 2, 1]
参见
|
插入元素并对底层容器进行排序
(公开成员函数) |