File tree Expand file tree Collapse file tree 5 files changed +260
-0
lines changed
Expand file tree Collapse file tree 5 files changed +260
-0
lines changed Original file line number Diff line number Diff line change @@ -37,6 +37,7 @@ namespace std {
3737| [`(destructor)`](list/op_destructor.md) | デストラクタ | |
3838| [`operator=`](list/op_assign.md) | 代入演算子 | |
3939| [`assign`](list/assign.md) | コンテナの再代入 | |
40+ | [`assign_range`](list/assign_range.md) | Rangeの要素を再代入 | C++23 |
4041
4142
4243### イテレータ
@@ -77,10 +78,13 @@ namespace std {
7778|-----------------|--------------------------------|-------|
7879| [`push_front`](list/push_front.md) | 先頭に要素を追加する | |
7980| [`emplace_front`](list/emplace_front.md) | 先頭への直接構築による要素追加 | C++11 |
81+ | [`prepend_range`](list/prepend_range.md) | 先頭にRangeの要素を追加する | C++23 |
8082| [`push_back`](list/push_back.md) | 末尾に要素を追加する | |
8183| [`emplace_back`](list/emplace_back.md) | 末尾への直接構築による要素追加 | C++11 |
84+ | [`append_range`](list/append_range.md) | 末尾にRangeの要素を追加する | C++23 |
8285| [`insert`](list/insert.md) | 要素の挿入 | |
8386| [`emplace`](list/emplace.md) | 要素の直接構築による挿入 | C++11 |
87+ | [`insert_range`](list/insert_range.md) | 任意の位置にRangeの要素を挿入する | C++23 |
8488| [`pop_front`](list/pop_front.md) | 先頭から要素を削除 | |
8589| [`pop_back`](list/pop_back.md) | 末尾から要素を削除 | |
8690| [`erase`](list/erase.md) | 要素の削除 | |
Original file line number Diff line number Diff line change 1+ # append_range
2+ * list[ meta header]
3+ * std[ meta namespace]
4+ * list[ meta class]
5+ * function template[ meta id-type]
6+ * cpp23[ meta cpp]
7+
8+ ``` cpp
9+ template <container-compatible-range<T> R>
10+ void append_range (R&& rg); // C++23
11+ ```
12+
13+ ## 概要
14+ Rangeの要素を末尾へ追加する。
15+
16+
17+ ## テンプレートパラメータ制約
18+ 型`T`が`*ranges::begin(rg)`から`list`コンテナへの`EmplaceConstructible`であること。
19+
20+
21+ ## 効果
22+ Range`rg`の各要素を、末尾に追加する。
23+
24+
25+ ## 戻り値
26+ なし
27+
28+
29+ ## 計算量
30+ `N =` [`ranges::distance`](../../iterator/ranges_distance.md)`(rg)`とすると、`N`に比例。Tのコンストラクタは`N`回呼ばれる。
31+
32+
33+ ## 例
34+ ```cpp example
35+ #include <iostream>
36+ #include <list>
37+
38+ int main()
39+ {
40+ std::list<int> lst = {1, 2, 3};
41+ const int a[3] = {4, 5, 6};
42+
43+ // Rangeを末尾に追加
44+ lst.append_range(a);
45+
46+ for (int i : lst) {
47+ std::cout << i << " ";
48+ }
49+ std::cout << std::endl;
50+ }
51+ ```
52+ * append_range[ color ff0000]
53+
54+ ### 出力
55+ ```
56+ 1 2 3 4 5 6
57+ ```
58+
59+
60+ ## 関連項目
61+
62+ | 名前 | 説明 |
63+ | -------------------------------------------| ----------------------|
64+ | [ ` push_back ` ] ( push_back.md ) | 末尾に要素を追加する |
65+ | [ ` emplace_back ` ] ( emplace_back.md ) | 末尾に要素を直接構築で追加する |
Original file line number Diff line number Diff line change 1+ # assign_range
2+ * list[ meta header]
3+ * std[ meta namespace]
4+ * list[ meta class]
5+ * function template[ meta id-type]
6+ * cpp23[ meta cpp]
7+
8+ ``` cpp
9+ template <container-compatible-range<T> R>
10+ void assign_range (R&& rg); // C++23
11+ ```
12+
13+ ## 概要
14+ Rangeの各要素を再代入する。
15+
16+
17+ ## 事前条件
18+ `*this` の要素の範囲と Range`rg` の要素の範囲が重複していないこと
19+
20+
21+ ## テンプレートパラメータ制約
22+ 型`T`が`*ranges::begin(rg)`から`list`コンテナへの`EmplaceConstructible`であること。
23+
24+
25+ ## 効果
26+ Range`rg`の各要素を、再代入する。
27+
28+
29+ ## 戻り値
30+ なし
31+
32+
33+ ## 例
34+ ```cpp example
35+ #include <iostream>
36+ #include <list>
37+
38+ int main()
39+ {
40+ std::list<int> lst = {1, 2, 3};
41+ const int a[3] = {4, 5, 6};
42+
43+ // Rangeを再代入
44+ lst.assign_range(a);
45+
46+ for (int i : lst) {
47+ std::cout << i << " ";
48+ }
49+ std::cout << std::endl;
50+ }
51+ ```
52+ * assign_range[ color ff0000]
53+
54+ ### 出力
55+ ```
56+ 4 5 6
57+ ```
58+
59+
60+ ## 関連項目
61+
62+ | 名前 | 説明 |
63+ | -------------------------------------------| ----------------------|
64+ | [ ` assign ` ] ( assign.md ) | コンテナに値を代入する |
Original file line number Diff line number Diff line change 1+ # insert_range
2+ * list[ meta header]
3+ * std[ meta namespace]
4+ * list[ meta class]
5+ * function template[ meta id-type]
6+ * cpp23[ meta cpp]
7+
8+ ``` cpp
9+ template <container-compatible-range<T> R>
10+ iterator insert_range (const_iterator pos, R&& rg); // C++23
11+ ```
12+
13+ ## 概要
14+ Rangeの各要素を任意の位置に挿入する。
15+
16+
17+ ## テンプレートパラメータ制約
18+ 型`T`が`*ranges::begin(rg)`から`list`コンテナへの`EmplaceConstructible`であること。
19+
20+
21+ ## 効果
22+ Range`rg`の各要素を、`pos`の直前に挿入する。
23+
24+
25+ ## 戻り値
26+ 挿入されたRange`rg`の最初の要素を指すイテレータ。`rg`が空の場合は`pos`。
27+
28+
29+ ## 例
30+ ```cpp example
31+ #include <iostream>
32+ #include <iterator>
33+ #include <list>
34+
35+ int main()
36+ {
37+ std::list<int> lst = {1, 2, 3};
38+ const int a[3] = {4, 5, 6};
39+
40+ // Rangeを1番目と2番目の要素の間に挿入
41+ lst.insert_range(std::next(lst.begin()), a);
42+
43+ for (int i : lst) {
44+ std::cout << i << " ";
45+ }
46+ std::cout << std::endl;
47+ }
48+ ```
49+ * insert_range[ color ff0000]
50+
51+ ### 出力
52+ ```
53+ 1 4 5 6 2 3
54+ ```
55+
56+
57+ ## 関連項目
58+
59+ | 名前 | 説明 |
60+ | -------------------------------------------| ----------------------|
61+ | [ ` insert ` ] ( insert.md ) | 任意の位置に要素を挿入する |
62+ | [ ` emplace ` ] ( emplace.md ) | 任意の位置に要素を直接構築で挿入する |
Original file line number Diff line number Diff line change 1+ # prepend_range
2+ * list[ meta header]
3+ * std[ meta namespace]
4+ * list[ meta class]
5+ * function template[ meta id-type]
6+ * cpp23[ meta cpp]
7+
8+ ``` cpp
9+ template <container-compatible-range<T> R>
10+ void prepend_range (R&& rg); // C++23
11+ ```
12+
13+ ## 概要
14+ 先頭にRangeの要素を追加する。
15+
16+
17+ ## テンプレートパラメータ制約
18+ 型`T`が`*ranges::begin(rg)`から`list`コンテナへの`EmplaceConstructible`であること。
19+
20+
21+ ## 効果
22+ Range`rg`の各要素を、先頭に追加する。
23+
24+
25+ ## 戻り値
26+ なし
27+
28+
29+ ## 計算量
30+ `N =` [`ranges::distance`](../../iterator/ranges_distance.md)`(rg)`とすると、`N`に比例。Tのコンストラクタは`N`回呼ばれる。
31+
32+
33+ ## 例
34+ ```cpp example
35+ #include <iostream>
36+ #include <list>
37+
38+ int main()
39+ {
40+ std::list<int> lst = {1, 2, 3};
41+ const int a[3] = {4, 5, 6};
42+
43+ // Rangeを先頭に追加
44+ lst.prepend_range(a);
45+
46+ for (int i : lst) {
47+ std::cout << i << " ";
48+ }
49+ std::cout << std::endl;
50+ }
51+ ```
52+ * prepend_range[ color ff0000]
53+
54+ ### 出力
55+ ```
56+ 4 5 6 1 2 3
57+ ```
58+
59+
60+ ## 関連項目
61+
62+ | 名前 | 説明 |
63+ | -------------------------------------------| ----------------------|
64+ | [ ` push_front ` ] ( push_front.md ) | 先頭に要素を追加する |
65+ | [ ` emplace_front ` ] ( emplace_front.md ) | 先頭に要素を直接構築で追加する |
You can’t perform that action at this time.
0 commit comments