Skip to content

Commit d3eeb80

Browse files
committed
add assign_range, insert_range_after and prepend_range to std::forward_list
1 parent 1a35e93 commit d3eeb80

File tree

4 files changed

+185
-0
lines changed

4 files changed

+185
-0
lines changed

reference/forward_list/forward_list.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ namespace std {
4848
| [`(destructor)`](forward_list/op_destructor.md) | デストラクタ | C++11 |
4949
| [`operator=`](forward_list/op_assign.md) | 代入演算子 | C++11 |
5050
| [`assign`](forward_list/assign.md) | コンテナの再代入 | C++11 |
51+
| [`assign_range`](forward_list/assign_range.md) | Rangeの要素を再代入 | C++23 |
5152
5253
5354
### イテレータ
@@ -83,9 +84,11 @@ namespace std {
8384
|----------------------------------------------------|--------------------------------|-------|
8485
| [`emplace_front`](forward_list/emplace_front.md) | 先頭への直接構築による要素追加 | C++11 |
8586
| [`push_front`](forward_list/push_front.md) | 先頭に要素を追加する | C++11 |
87+
| [`prepend_range`](forward_list/prepend_range.md) | 先頭にRangeの要素を追加する | C++23 |
8688
| [`pop_front`](forward_list/pop_front.md) | 先頭から要素を削除 | C++11 |
8789
| [`emplace_after`](forward_list/emplace_after.md) | 任意の位置への直接構築による要素挿入 | C++11 |
8890
| [`insert_after`](forward_list/insert_after.md) | 任意の位置への要素挿入 | C++11 |
91+
| [`insert_range_after`](forward_list/insert_range_after.md) | 任意の位置へRangeの要素挿入 | C++23 |
8992
| [`erase_after`](forward_list/erase_after.md) | 指定したイテレータの次の要素を削除する | C++11 |
9093
| [`swap`](forward_list/swap.md) | コンテナの交換 | C++11 |
9194
| [`resize`](forward_list/resize.md) | 要素数を変更する | C++11 |
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# assign_range
2+
* forward_list[meta header]
3+
* std[meta namespace]
4+
* forward_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)`から`forward_list`コンテナへの`EmplaceConstructible`であること。
23+
24+
25+
## 効果
26+
Range`rg`の各要素を、再代入する。
27+
28+
29+
## 戻り値
30+
なし
31+
32+
33+
## 例
34+
```cpp example
35+
#include <forward_list>
36+
#include <iostream>
37+
38+
int main()
39+
{
40+
std::forward_list<int> fl = {1, 2, 3};
41+
const int a[3] = {4, 5, 6};
42+
43+
// Rangeを再代入
44+
fl.assign_range(a);
45+
46+
for (int i : fl) {
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) | コンテナに値を代入する |
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# insert_range_after
2+
* forward_list[meta header]
3+
* std[meta namespace]
4+
* forward_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_after(const_iterator pos, R&& rg); // C++23
11+
```
12+
13+
## 概要
14+
Rangeの各要素を任意の位置に挿入する。
15+
16+
17+
## テンプレートパラメータ制約
18+
型`T`が`*ranges::begin(rg)`から`forward_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 <forward_list>
32+
#include <iostream>
33+
34+
int main()
35+
{
36+
std::forward_list<int> fl = {1, 2, 3};
37+
const int a[3] = {4, 5, 6};
38+
39+
// Rangeを1番目の直後に挿入
40+
fl.insert_range_after(fl.begin(), a);
41+
42+
for (int i : fl) {
43+
std::cout << i << " ";
44+
}
45+
std::cout << std::endl;
46+
}
47+
```
48+
* insert_range_after[color ff0000]
49+
50+
### 出力
51+
```
52+
1 4 5 6 2 3
53+
```
54+
55+
56+
## 関連項目
57+
58+
| 名前 | 説明 |
59+
|-------------------------------------------|----------------------|
60+
| [`insert_after`](insert_after.md) | 任意の位置への要素挿入 |
61+
| [`emplace_after`](emplace_after.md) | 任意の位置への直接構築による要素挿入 |
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# prepend_range
2+
* forward_list[meta header]
3+
* std[meta namespace]
4+
* forward_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)`から`forward_list`コンテナへの`EmplaceConstructible`であること。
19+
20+
21+
## 戻り値
22+
なし
23+
24+
25+
## 例
26+
```cpp example
27+
#include <forward_list>
28+
#include <iostream>
29+
30+
int main()
31+
{
32+
std::forward_list<int> fl = {1, 2, 3};
33+
const int a[3] = {4, 5, 6};
34+
35+
// Rangeを先頭に追加
36+
fl.prepend_range(a);
37+
38+
for (int i : fl) {
39+
std::cout << i << " ";
40+
}
41+
std::cout << std::endl;
42+
}
43+
```
44+
* prepend_range[color ff0000]
45+
46+
### 出力
47+
```
48+
4 5 6 1 2 3
49+
```
50+
51+
52+
## 関連項目
53+
54+
| 名前 | 説明 |
55+
|-------------------------------------------|----------------------|
56+
| [`push_front`](push_front.md) | 先頭に要素を追加する |
57+
| [`emplace_front`](emplace_front.md) | 先頭に要素を直接構築で追加する |

0 commit comments

Comments
 (0)