Skip to content

Commit 192dae6

Browse files
committed
言語機能と<algorithm>で、できるだけイテレータ範囲という用語を使用するようにした #1011
1 parent 04d615c commit 192dae6

File tree

162 files changed

+2190
-926
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

162 files changed

+2190
-926
lines changed

Diff for: GLOBAL_DEFINED_WORDS.json

+3
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,7 @@
7070
"テンプレートパラメータ制約": {
7171
"desc": "関数であればオーバーロード解決に参加するための条件、それ以外であれば受け付ける型の条件"
7272
}
73+
"イテレータ範囲": {
74+
"desc": "2つのイテレータで表現される半開区間を表す。C++20からイテレータと番兵で異なる型であっても指定可能になる"
75+
}
7376
}

Diff for: lang/cpp11.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -146,13 +146,13 @@ C++11では、参照するC言語の規格がC89からC99に変更となり、C9
146146

147147
### アルゴリズム
148148

149-
- 範囲が特定の条件を満たしているか調べる[`std::all_of()`](/reference/algorithm/all_of.md)[`std::any_of()`](/reference/algorithm/any_of.md)[`std::none_of`](/reference/algorithm/none_of.md)を追加
149+
- イテレータ範囲が特定の条件を満たしているか調べる[`std::all_of()`](/reference/algorithm/all_of.md)[`std::any_of()`](/reference/algorithm/any_of.md)[`std::none_of`](/reference/algorithm/none_of.md)を追加
150150
- 条件を満たしていない最初の要素を検索する[`std::find_if_not()`](/reference/algorithm/find_if_not.md)を追加
151151
- 指定された数の要素をコピーする[`std::copy_n()`](/reference/algorithm/copy_n.md)を追加
152152
- 条件を満たす要素のみをコピーする[`std::copy_if()`](/reference/algorithm/copy_if.md)を追加
153-
- 範囲の要素をムーブする[`std::move()`](/reference/algorithm/move.md)[`std::move_backward()`](/reference/algorithm/move_backward.md)を追加
154-
- 新たな乱数ライブラリ[`<random>`](/reference/random.md)に対応した範囲のシャッフルアルゴリズム[`std::shuffle()`](/reference/algorithm/shuffle.md)を追加
155-
- 範囲がソート済みか調べる[`std::is_sorted()`](/reference/algorithm/is_sorted.md)を追加
153+
- イテレータ範囲の要素をムーブする[`std::move()`](/reference/algorithm/move.md)[`std::move_backward()`](/reference/algorithm/move_backward.md)を追加
154+
- 新たな乱数ライブラリ[`<random>`](/reference/random.md)に対応したイテレータ範囲のシャッフルアルゴリズム[`std::shuffle()`](/reference/algorithm/shuffle.md)を追加
155+
- イテレータ範囲がソート済みか調べる[`std::is_sorted()`](/reference/algorithm/is_sorted.md)を追加
156156
- 2つの値の最小値を取得する[`std::min()`](/reference/algorithm/min.md)、最大値を取得する[`std::max()`](/reference/algorithm/max.md)に、初期化子リストによる可変引数版を追加
157157
- 最小値と最大値を同時に取得する関数[`std::minmax()`](/reference/algorithm/minmax.md)[`std::minmax_element()`](/reference/algorithm/minmax_element.md)を追加
158158
- 指定された値から始まる整数列を生成する[`std::iota()`](/reference/numeric/iota.md)を追加

Diff for: lang/cpp11/range_based_for.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ for (const auto& e : v) {
4242

4343

4444
## 仕様
45-
範囲for文は配列または、`begin()`および`end()`で表される範囲内の全ての要素に対して、処理を実行する。
45+
範囲for文は配列または、`begin()`および`end()`で表されるイテレータ範囲に含まれる全ての要素に対して、処理を実行する。
4646

4747
範囲for文は以下の構文を持つ:
4848

@@ -54,7 +54,7 @@ for-range-declarationには変数宣言を書く。ここで宣言した変数
5454

5555
for-range-initializerにはfor文が処理すべき範囲を表す値を書く。
5656

57-
値の型が配列の場合、配列のサイズが分かるものでなければエラーとなる。値の型が配列以外(クラスなど)の場合、`begin()``end()`で範囲の先頭と終端が表せるものでなければエラーとなる
57+
値の型が配列の場合、配列のサイズが分かるものでなければエラーとなる。値の型が配列以外(クラスなど)の場合、`begin()``end()`でイテレータ範囲の先頭と終端が表せるものでなければエラーとなる
5858

5959
語弊を恐れず言えば、メンバ関数に`begin()`および`end()`を持つクラスであれば、何でも範囲for文の範囲として指定できる。
6060

@@ -86,7 +86,7 @@ C++11、C++14において、範囲for文は以下のように通常のfor文へ
8686

8787
展開後に現れる変数名は仮のものであり、実際に変数として見えるわけではない。しかし、デバッガーにこれらの変数が現れることがある。
8888

89-
begin-exprとend-exprの具体的な内容は、範囲として何を渡すかによって3通りに分かれる。いずれの場合も、begin-exprとend-exprは同じ型でなければならない。
89+
begin-exprとend-exprの具体的な内容は、イテレータ範囲として何を渡すかによって3通りに分かれる。いずれの場合も、begin-exprとend-exprは同じ型でなければならない。
9090

9191
配列を範囲として渡したとき、以下のように展開される:
9292

Diff for: lang/cpp14.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ C++14とは、2014年12月に改訂され、ISO/IEC 14882:2014で標準規格化
5757

5858

5959
### アルゴリズム
60-
- 以下のアルゴリズムに、2つ目の範囲の終端イテレータをパラメータにとるバージョンを追加。これにより、2つの範囲が同じ長さかを事前にユーザーがチェックする必要がなくなった
60+
- 以下のアルゴリズムに、2つ目のイテレータ範囲の終端イテレータをパラメータにとるバージョンを追加。これにより、2つの範囲が同じ長さかを事前にユーザーがチェックする必要がなくなった
6161
- [`std::mismatch()`](/reference/algorithm/mismatch.md)
6262
- [`std::equal()`](/reference/algorithm/equal.md)
6363
- [`std::is_permutation()`](/reference/algorithm/is_permutation.md)

Diff for: lang/cpp17/folding_expressions.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ auto res = (std::string(args) + ...);
234234

235235
## 関連項目
236236
- [C++11 可変引数テンプレート](/lang/cpp11/variadic_templates.md)
237-
- [`std::accumulate`](/reference/numeric/accumulate.md)イテレータの範囲について累積的に二項演算を行う
237+
- [`std::accumulate`](/reference/numeric/accumulate.md)イテレータ範囲について累積的に二項演算を行う
238238

239239

240240
## 参照

Diff for: reference/algorithm/all_of.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace std {
2525
```
2626
2727
## 概要
28-
範囲の全ての要素が条件を満たすかを判定する
28+
イテレータ範囲`[first, last)`の全ての要素が条件を満たすかを判定する
2929
3030
3131
## 戻り値

Diff for: reference/algorithm/any_of.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ namespace std {
2525
```
2626
2727
## 概要
28-
範囲のいずれかの要素が条件を満たすかを判定する
28+
イテレータ範囲`[first, last)`のいずれかの要素が条件を満たすかを判定する
2929
3030
3131
## 戻り値
32-
`[first,last)` 内のイテレータ `i` について `pred(*i)` が `true` になるような要素があれば`true`を返し、そうでなければ`false`を返す。
33-
`[first,last)`の範囲が空の場合は`false`を返す。
32+
イテレータ範囲`[first,last)` 内のイテレータ `i` について `pred(*i)` が `true` になるような要素があれば`true`を返し、そうでなければ`false`を返す。
33+
イテレータ範囲`[first,last)`が空の場合は`false`を返す。
3434
3535
3636
## 計算量

Diff for: reference/algorithm/copy.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ namespace std {
2727
```
2828
2929
## 概要
30-
指定された範囲の要素をコピーする
30+
指定されたイテレータ範囲`[first, last)`の要素を出力イテレータにコピーする
3131
3232
3333
## 要件
34-
`result` `[first,last)` の範囲に含まれてはならない
34+
`result` はイテレータ範囲 `[first,last)` に含まれてはならない
3535
3636
3737
## 効果

Diff for: reference/algorithm/copy_backward.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ namespace std {
2020
```
2121
2222
## 概要
23-
指定された範囲の要素を後ろからコピーする
23+
指定されたイテレータ範囲`[first, last)`の要素を、出力イテレータ範囲に後ろからコピーする
2424
2525
2626
## 要件
27-
`result` `(first,last]` の範囲に含まれてはならない
27+
`result` はイテレータ範囲 `(first,last]` に含まれてはならない
2828
2929
3030
## 効果
@@ -42,7 +42,7 @@ namespace std {
4242
4343
4444
## 備考
45-
`last` `[result - (last-first), result)` の範囲内にあるときには、`copy()` の代わりに `copy_backward()` を使うべきである。
45+
`last` がイテレータ範囲 `[result - (last-first), result)` に含まれる場合には、`copy()` の代わりに `copy_backward()` を使うべきである。
4646
4747
4848
## 例

Diff for: reference/algorithm/copy_if.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,19 @@ namespace std {
3232
```
3333
3434
## 概要
35-
条件を満たす要素のみをコピーする
35+
イテレータ範囲`[first, last)`のうち、条件を満たす要素のみを出力イテレータ範囲にコピーする
3636
3737
3838
## 要件
39-
`[first,last)` の範囲と、`[result,result + (last - first))` の範囲は重なっていてはならない
39+
イテレータ範囲`[first,last)`と、イテレータ範囲`[result,result + (last - first))`は重なっていてはならない
4040
4141
4242
## 効果
4343
`[first,last)` 内のイテレータ `i` について `pred(*i)` が `true` である要素を `result` へ順番にコピーする。
4444
4545
4646
## 戻り値
47-
コピー先の範囲の終端を返す
47+
コピー先のイテレータ範囲の終端を返す
4848
4949
5050
## 計算量

Diff for: reference/algorithm/equal.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -86,16 +86,16 @@ namespace std {
8686
```
8787
8888
## 概要
89-
2つの範囲を等値比較する
89+
2つのイテレータ範囲を等値比較する
9090
91-
- (1) : 範囲`[first1, last1)`と範囲`[first2, first2 + (last1 - first1))`が等値かを判定する
91+
- (1) : イテレータ範囲`[first1, last1)`とイテレータ範囲`[first2, first2 + (last1 - first1))`が等値かを判定する
9292
- (2) : (1)の等値比較を任意の2引数関数オブジェクトで行う
93-
- (3) : 範囲`[first1, last1)`と範囲`[first2, last2)`が等値かを判定する
93+
- (3) : イテレータ範囲`[first1, last1)`とイテレータ範囲`[first2, last2)`が等値かを判定する
9494
- (4) : (3)の等値比較を任意の2引数関数オブジェクトで行う
9595
96-
2つの範囲が異なる要素数であった場合、`false`を返す。
96+
2つのイテレータ範囲が異なる要素数であった場合、`false`を返す。
9797
98-
2つの範囲が要素数および各要素が等値であった場合、`true`を返す。
98+
2つのイテレータ範囲が要素数および各要素が等値であった場合、`true`を返す。
9999
100100
101101
## 戻り値

Diff for: reference/algorithm/fill.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace std {
2525
```
2626
2727
## 概要
28-
指定された値で出力の範囲に書き込む
28+
イテレータ範囲`[first, last)`のすべての要素に指定された値を書き込む
2929
3030
3131
## 要件

Diff for: reference/algorithm/fill_n.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ namespace std {
3434
```
3535
3636
## 概要
37-
指定された値で出力の範囲に `n` 個を書き込む
37+
イテレータ範囲`[first, first + n)`のすべての要素に指定された値を書き込む
3838
3939
4040
## 要件

Diff for: reference/algorithm/find_end.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ namespace std {
5252
```
5353
5454
## 概要
55-
範囲の中から、特定のサブシーケンスを検索する
55+
イテレータ範囲`[first1, last1)`の中から、特定のサブシーケンス`[first2, last2)`を検索する
5656
5757
5858
## 戻り値

Diff for: reference/algorithm/find_if.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ namespace std {
2424
```
2525
2626
## 概要
27-
範囲の中から、指定された条件を満たす最初の要素を検索する。
27+
イテレータ範囲`[first, last)`の中から、指定された条件を満たす最初の要素を検索する。
2828
2929
3030
## 戻り値

Diff for: reference/algorithm/find_if_not.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace std {
2525
```
2626
2727
## 概要
28-
範囲の中から、指定された条件を満たさない最初の要素を検索する。
28+
イテレータ範囲`[first, last)`の中から、指定された条件を満たさない最初の要素を検索する。
2929
3030
3131
## 戻り値

Diff for: reference/algorithm/for_each.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ namespace std {
2424
```
2525
2626
## 概要
27-
範囲の全ての要素に、指定された関数を適用する。
27+
イテレータ範囲`[first, last)`の全ての要素に、指定された関数を適用する。
2828
2929
3030
## 要件

Diff for: reference/algorithm/for_each_n.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ namespace std {
2828
```
2929
3030
## 概要
31-
範囲の先頭N個の要素に、指定された関数を適用する。
31+
イテレータ範囲`[first, first + n)` (範囲の先頭N要素) のすべての要素に、指定された関数を適用する。
3232
3333
3434
## 要件
@@ -37,7 +37,7 @@ namespace std {
3737
3838
3939
## 効果
40-
範囲`[first, first + n)` 内の全てのイテレータ `i` に `f(*i)` という操作を行う。
40+
イテレータ範囲`[first, first + n)` 内の全てのイテレータ `i` に `f(*i)` という操作を行う。
4141
4242
このアルゴリズムはその他のアルゴリズムと違い、関数 `f` の内部で `*i` の値を書き換えても構わない(もちろんイテレータの型が `mutable iterator` の要件を満たしている場合に限る)。
4343

Diff for: reference/algorithm/generate.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ namespace std {
2424
```
2525
2626
## 概要
27-
出力の範囲へ関数の結果を書き込む
27+
イテレータ範囲`[first, last)`に、引数なしの関数`gen`の結果を書き込む
2828
2929
30-
## 要件
31-
`gen` は引数を取らないこと。
30+
## テンプレートパラメータ制約
31+
- `gen` は引数をとらないこと
3232
3333
3434
## 効果
35-
`[first,last)` のそれぞれのイテレータについて関数オブジェクト `gen` を呼び出し、その戻り値を代入する。
35+
イテレータ範囲`[first,last)` のそれぞれのイテレータについて関数オブジェクト `gen` を呼び出し、その戻り値を代入する。
3636
3737
3838
## 計算量

Diff for: reference/algorithm/generate_n.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,16 @@ namespace std {
3333
```
3434
3535
## 概要
36-
出力の範囲へ関数の結果を `n` 個書き込む
36+
イテレータ範囲`[first, first + n)` (範囲の先頭N要素) に関数`gen`の結果を書き込む
3737
3838
39-
## 要件
39+
## テンプレートパラメータ制約
4040
- `gen` は引数をとらないこと。
41-
- `Size` は integral type に変換可能であること
41+
- `Size` は整数型に変換可能であること
4242
4343
4444
## 効果
45-
`n` が 1 以上の場合、`[first,last)` のそれぞれのイテレータについて関数オブジェクト `gen` を呼び出し、その戻り値を代入する。
45+
`n` が 1 以上の場合、イテレータ範囲`[first,last)` のそれぞれのイテレータについて関数オブジェクト `gen` を呼び出し、その戻り値を代入する。
4646
4747
そうでない場合、何もしない。
4848

Diff for: reference/algorithm/includes.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ namespace std {
5050
```
5151
5252
## 概要
53-
2つのソート済み範囲において、一方の範囲の要素がもう一方の範囲に全て含まれているかを判定する。
53+
2つのソート済みイテレータ範囲`[first1, last1)`と`[first2, last2)`において、一方の範囲の要素がもう一方の範囲に全て含まれているかを判定する。
54+
55+
この関数は、イテレータ範囲`[first1, last1)`にイテレータ範囲`[first2, last2)`が含まれていれば`true`を返す。
5456
5557
5658
## 戻り値

Diff for: reference/algorithm/inplace_merge.md

+10-5
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,24 @@ namespace std {
3232
```
3333
3434
## 概要
35-
2つの連続したソート済み範囲をマージする
35+
2つの連続したソート済みイテレータ範囲`[first, middle)`と`[middle, last)`をマージする
3636
37+
この関数は、ソート済みイテレータ範囲`[first, middle)`と、ソート済み範囲`[middle, last)`のように大きいイテレータ範囲`[first, last)`内に2つのソート済みイテレータ範囲が含まれている場合に、それらをマージしてソートする。
3738
38-
## 要件
39-
- `[first,middle)` と `[middle,last)` の範囲はそれぞれ `operator<` か `comp` でソートされていること。
39+
40+
## テンプレートパラメータ制約
4041
- `BidirectionalIterator` は `ValueSwappable` の要件を満たしていること。
4142
- `*first` の型は `MoveConstructible` と `MoveAssignable` の要件を満たしていること。
4243
4344
45+
## 事前条件
46+
- イテレータ範囲`[first,middle)` と イテレータ範囲`[middle,last)` はそれぞれ `operator<` か `comp` でソートされていること。
47+
48+
4449
## 効果
4550
`[first,middle)`, `[middle,last)` という、連続した2つの範囲をマージし、結果を `[first,last)` へ格納する。
4651
47-
結果の範囲 `[first,last)` は昇順になる。つまり、`first` を除く `[first,last)` 内の全てのイテレータ `i` について、`*i < *(i - 1)` または `comp(*i, *(i - 1))` が `false` になる。
52+
結果のイテレータ範囲 `[first,last)` は昇順になる。つまり、`first` を除く `[first,last)` 内の全てのイテレータ `i` について、`*i < *(i - 1)` または `comp(*i, *(i - 1))` が `false` になる。
4853
4954
5055
## 戻り値
@@ -68,7 +73,7 @@ int main()
6873
{
6974
std::vector<int> v = {1,4,5, 2,3,6};
7075
71-
// ソートされた2つの範囲をマージ
76+
// ソートされた2つのイテレータ範囲をマージ
7277
std::inplace_merge(v.begin(), v.begin() + 3, v.end());
7378
7479
std::for_each(v.begin(), v.end(), [](int x) {

Diff for: reference/algorithm/is_heap.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ namespace std {
3838
```
3939
4040
## 概要
41-
範囲がヒープ化されているか判定する
41+
イテレータ範囲`[first, last)`がヒープ化されているか判定する
4242
4343
4444
## 戻り値

Diff for: reference/algorithm/is_heap_until.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ namespace std {
4444
```
4545
4646
## 概要
47-
範囲がヒープ化されているか判定し、ヒープ化されていない最初の要素を指すイテレータを取得する。
47+
イテレータ範囲`[first, last)`がヒープ化されているか判定し、ヒープ化されていない最初の要素を指すイテレータを取得する。
4848
4949
5050
## 戻り値

Diff for: reference/algorithm/is_partitioned.md

+5-6
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,16 @@ namespace std {
2525
```
2626
2727
## 概要
28-
与えられた範囲が条件によって[区分化](/reference/algorithm.md#sequence-is-partitioned)されているか判定する。
28+
イテレータ範囲`[first, last)`が条件によって[区分化](/reference/algorithm.md#sequence-is-partitioned)されているか判定する。
2929
3030
31-
## 要件
32-
`InputIterator`のvalue typeは `Predicate` の引数型へ変換可能でなければならない。
33-
34-
つまり `pred(*first)` という式が有効でなければならない。
31+
## テンプレートパラメータ制約
32+
- `InputIterator`のvalue typeは `Predicate` の引数型へ変換可能でなければならない
33+
- つまり `pred(*first)` という式が有効でなければならない
3534
3635
3736
## 戻り値
38-
`[first,last)` が空、 または `[first,last)` が `pred` によって[区分化](/reference/algorithm.md#sequence-is-partitioned)されているなら `true` 、そうでなければ `false` を返す。
37+
イテレータ範囲`[first,last)` が空、 または `[first,last)` が `pred` によって[区分化](/reference/algorithm.md#sequence-is-partitioned)されているなら `true` 、そうでなければ `false` を返す。
3938
4039
つまり、`pred` を満たす全ての要素が、`pred` を満たさない全ての要素より前に出現するなら `true` を返す。
4140

0 commit comments

Comments
 (0)