File tree Expand file tree Collapse file tree 4 files changed +130
-0
lines changed
Expand file tree Collapse file tree 4 files changed +130
-0
lines changed Original file line number Diff line number Diff line change @@ -49,6 +49,7 @@ namespace std {
4949| [`size`](priority_queue/size.md) | 要素数を取得する | |
5050| [`top`](priority_queue/top.md) | 次の要素にアクセスする | |
5151| [`push`](priority_queue/push.md) | 要素を追加する | |
52+ | [`push_range`](priority_queue/push_range.md) | Rangeの要素を追加する | C++23 |
5253| [`emplace`](priority_queue/emplace.md) | 直接構築で要素を追加する | C++11 |
5354| [`pop`](priority_queue/pop.md) | 次の要素を削除する | |
5455| [`swap`](priority_queue/swap.md) | 他のpriority_queueオブジェクトと値を入れ替える | C++11 |
Original file line number Diff line number Diff line change 1+ # push_range
2+ * queue[ meta header]
3+ * std[ meta namespace]
4+ * priority_queue[ meta class]
5+ * function template[ meta id-type]
6+ * cpp23[ meta cpp]
7+
8+ ``` cpp
9+ template <container-compatible-range<value_type> R>
10+ void push_range (R&& rg); // C++23
11+ ```
12+
13+ ## 概要
14+ Range`rg` の各要素を `priority_queue` に追加し、優先順に並べ替えを行う。
15+
16+
17+ ## 効果
18+ まず `c` に `rg` の要素を追加する。`c.append_range(forward<R>(rg))` が有効であれば、これで要素を追加する。そうでなければ、`ranges::copy(rg, back_inserter(c))` で要素を追加する。
19+
20+ 次に、`make_heap(c.begin(), c.end(), comp)` で優先順に並べ替えを行う。
21+
22+
23+ ## 戻り値
24+ なし
25+
26+
27+ ## 例
28+ ```cpp example
29+ #include <iostream>
30+ #include <queue>
31+ #include <vector>
32+
33+ int main()
34+ {
35+ std::priority_queue<int> que;
36+ std::vector<int> vec = {2, 1, 3};
37+
38+ que.push_range(vec);
39+
40+ while (!que.empty()) {
41+ std::cout << que.top() << std::endl;
42+ que.pop();
43+ }
44+ }
45+ ```
46+ * push_range[ color ff0000]
47+ * que.empty()[ link empty.md]
48+ * que.top()[ link top.md]
49+ * que.pop()[ link pop.md]
50+
51+ ### 出力
52+ ```
53+ 3
54+ 2
55+ 1
56+ ```
57+
58+
59+ ## 関連項目
60+
61+ | 名前 | 説明 |
62+ | -------------------| ----------------|
63+ | [ ` push ` ] ( push.md ) | 要素を追加する |
Original file line number Diff line number Diff line change @@ -44,6 +44,7 @@ namespace std {
4444| [`front`](queue/front.md) | 次の要素にアクセスする | |
4545| [`back`](queue/back.md) | 最後の要素にアクセスする | |
4646| [`push`](queue/push.md) | 要素を追加する | |
47+ | [`push_range`](queue/push_range.md) | Rangeの要素を追加する | C++23 |
4748| [`emplace`](queue/emplace.md) | 直接構築で要素を追加する | C++11 |
4849| [`pop`](queue/pop.md) | 次の要素を削除する | |
4950| [`swap`](queue/swap.md) | 他の`queue`オブジェクトと値を入れ替える | C++11 |
Original file line number Diff line number Diff line change 1+ # push_range
2+ * queue[ meta header]
3+ * std[ meta namespace]
4+ * queue[ meta class]
5+ * function template[ meta id-type]
6+ * cpp23[ meta cpp]
7+
8+ ``` cpp
9+ template <container-compatible-range<value_type> R>
10+ void push_range (R&& rg); // C++23
11+ ```
12+
13+ ## 概要
14+ Range`rg` の各要素を `queue` の末尾に追加する。
15+
16+
17+ ## 効果
18+ `c.append_range(forward<R>(rg))` が有効であれば、これと同等。
19+ そうでなければ、`ranges::copy(rg, back_inserter(c))`。
20+
21+
22+ ## 戻り値
23+ なし
24+
25+
26+ ## 計算量
27+ `c.append_range(rg)`(または `ranges::copy(rg, back_inserter(c))`)と同じ。
28+
29+
30+ ## 例
31+ ```cpp example
32+ #include <iostream>
33+ #include <queue>
34+ #include <vector>
35+
36+ int main()
37+ {
38+ std::queue<int> que;
39+ std::vector<int> vec = {1, 2, 3};
40+
41+ que.push_range(vec);
42+
43+ while (!que.empty()) {
44+ std::cout << que.front() << std::endl;
45+ que.pop();
46+ }
47+ }
48+ ```
49+ * push_range[ color ff0000]
50+ * que.empty()[ link empty.md]
51+ * que.front()[ link front.md]
52+ * que.pop()[ link pop.md]
53+
54+ ### 出力
55+ ```
56+ 1
57+ 2
58+ 3
59+ ```
60+
61+ ## 関連項目
62+
63+ | 名前 | 説明 |
64+ | -------------------| ----------------|
65+ | [ ` push ` ] ( push.md ) | 要素を追加する |
You can’t perform that action at this time.
0 commit comments