Skip to content

Commit d0f20fc

Browse files
committed
add range constructor to list, deque, and string
1 parent f45447e commit d0f20fc

File tree

4 files changed

+29
-1
lines changed

4 files changed

+29
-1
lines changed

reference/deque/deque/op_constructor.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,13 @@ deque(deque&& y, const Allocator& a); // (9) C++11 から
3131

3232
deque(initializer_list<T> il,
3333
const Allocator& a = Allocator()); // (10) C++11 から
34+
35+
template <container-compatible-range<T> R>
36+
deque(from_range_t, R&& rg,
37+
const Allocator& a = Allocator()); // (11) C++23 から
3438
```
3539
* initializer_list[link /reference/initializer_list/initializer_list.md]
40+
* from_range_t[link ../../ranges/from_range_t.md]
3641
3742
3843
## 概要
@@ -55,6 +60,7 @@ deque(initializer_list<T> il,
5560
- (8) : コピーコンストラクタ。アロケータに `a` を使用して、`x` と同じ要素を保持した `deque` を構築する。
5661
- (9) : ムーブコンストラクタ。アロケータに `a` を使用して、ムーブセマンティクスを使って `y` の要素でコンテナを構築する。
5762
- (10) : 初期化子リストで要素を構築するコンストラクタ。`deque(il.`[`begin`](../../initializer_list/initializer_list/begin.md)`(), il.`[`end`](../../initializer_list/initializer_list/end.md)`(), a)` と等価。
63+
- (11) : Rangeコンストラクタ。アロケータに `a` を使用して、`rg` の要素で `deque` を構築する。
5864
5965
6066
## 計算量
@@ -68,7 +74,8 @@ deque(initializer_list<T> il,
6874
- (7) : 定数時間
6975
- (8) : `x` の要素数に対して線形時間
7076
- (9) : `a == y.`[`get_allocator`](get_allocator.md)`()` の場合、定数時間、そうでなければ `y` の要素数に対して線形時間
71-
- (10) : `il`の要素数に対して線形時間
77+
- (10) : `il` の要素数に対して線形時間
78+
- (11) : `rg` の要素数に対して線形時間
7279
7380
7481
## 備考

reference/forward_list/forward_list/op_constructor.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,13 @@ forward_list(forward_list&& x, const Allocator& a); // (9) C++11
3232

3333
forward_list(initializer_list<T> il,
3434
const Allocator& a = Allocator()); // (10) C++11
35+
36+
template <container-compatible-range<T> R>
37+
forward_list(from_range_t, R&& rg,
38+
const Allocator& a = Allocator()); // (11) C++23
3539
```
3640
* initializer_list[link /reference/initializer_list/initializer_list.md]
41+
* from_range_t[link ../../ranges/from_range_t.md]
3742
3843
## 概要
3944
`forward_list`オブジェクトを、以下に示す通りの要素で初期化する。
@@ -53,6 +58,7 @@ forward_list(initializer_list<T> il,
5358
- (8) : アロケータを指定したコピーコンストラクタ
5459
- (9) : アロケータを指定したムーブコンストラクタ
5560
- (10) : 初期化子リストを受け取るコンストラクタ。`forward_list(il.`[`begin`](../../initializer_list/initializer_list/begin.md)`(), il.`[`end`](../../initializer_list/initializer_list/end.md)`(), a)` と等価。
61+
- (11) : Range `rg` の要素をコピーした `forward_list` オブジェクトを構築する。
5662
5763
5864
## 計算量
@@ -65,6 +71,7 @@ forward_list(initializer_list<T> il,
6571
- (8) : `x` の要素数に対して線形時間
6672
- (9) : `x.`[`get_allocator`](get_allocator.md)`() == a` であれば、定数時間。そうでなければ `x` の要素数に対して線形時間
6773
- (10) : `il` の要素数に対して線形時間
74+
- (11) : `rg` の要素数に対して線形時間
6875
6976
7077
## 備考

reference/list/list/op_constructor.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,13 @@ list(list&& x, const Allocator& a); // (9) C++11 から
2929

3030
list(initializer_list<T> il,
3131
const Allocator& a = Allocator()); // (10) C++11 から
32+
33+
template <container-compatible-range<T> R>
34+
list(from_range_t, R&& rg,
35+
const Allocator& a = Allocator()); // (11) C++23 から
3236
```
3337
* initializer_list[link /reference/initializer_list/initializer_list.md]
38+
* from_range_t[link ../../ranges/from_range_t.md]
3439
3540
3641
## 概要
@@ -48,6 +53,7 @@ list オブジェクトの構築
4853
- (8) : アロケータを指定したコピーコンストラクタ。
4954
- (9) : アロケータを指定したムーブコンストラクタ。
5055
- (10) : 初期化子リストを受け取るコンストラクタ。`list(il.`[`begin`](../../initializer_list/initializer_list/begin.md)`(), il.`[`end`](../../initializer_list/initializer_list/end.md)`(), a)` と等価。
56+
- (11) : Rangeコンストラクタ。Range `rg` の要素で `list` を構築する。
5157
5258
5359
## 計算量
@@ -57,6 +63,8 @@ list オブジェクトの構築
5763
- (6), (8) : `x.`[`size`](size.md)`()` に対して線形時間
5864
- (7) : 定数時間
5965
- (9) : `a == x.`[`get_allocator`](get_allocator.md)`()` であれば定数時間。そうでなければ `x.`[`size`](size.md)`()` に対して線形時間
66+
- (10) : `il.`[`size`](../../initializer_list/initializer_list/size.md)`()` に対して線形時間
67+
- (11) : [`ranges::distance`](../../iterator/ranges_distance.md)`(rg)` に対して線形時間
6068
6169
6270
## 備考

reference/string/basic_string/op_constructor.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,13 @@ constexpr basic_string(const T& t,
118118
size_type pos,
119119
size_type n,
120120
const Allocator& a = Allocator()); // (15) C++20
121+
122+
template <container-compatible-range<CharT> R>
123+
constexpr basic_string(from_range_t, R&& rg,
124+
const Allocator& a = Allocator()); // (19) C++23
121125
```
122126
* initializer_list[link /reference/initializer_list/initializer_list.md]
127+
* from_range_t[link ../../ranges/from_range_t.md]
123128
124129
## 概要
125130
- (1) : デフォルトコンストラクタ。アロケータをデフォルト構築して空の`basic_string`オブジェクトを構築する。
@@ -139,6 +144,7 @@ constexpr basic_string(const T& t,
139144
- (15) : [`basic_string_view`](/reference/string_view/basic_string_view.md)`<charT, traits>`に変換可能な`t`が参照する範囲の文字列の`pos`番目から`n`文字の部分文字列がコピーされる。`n == npos`の場合、`pos`番目から末尾までの部分文字列がコピーされる。
140145
- (17) : `str`オブジェクトの部分文字列のコピーから`basic_string`オブジェクトを構築する。`str`オブジェクトの`pos`番目から`n`文字の部分文字列がコピーされる。`n == npos`の場合、`pos`番目から末尾までの部分文字列がコピーされる。`str`は未規定の値になる。
141146
- (18) : `str`オブジェクトの部分文字列のコピーから`basic_string`オブジェクトを構築する。`str`オブジェクトの`pos`番目から末尾までの部分文字列がコピーされる。`str`は未規定の値になる。
147+
- (19) : Range`rg`から`basic_string`オブジェクトを構築する。
142148
143149
144150
## テンプレートパラメータ制約

0 commit comments

Comments
 (0)