From 58c137d95c790b4afa37945a0b9cec9236cc2dc3 Mon Sep 17 00:00:00 2001 From: tshino Date: Mon, 13 Mar 2023 22:14:33 +0900 Subject: [PATCH] =?UTF-8?q?shift=5Fleft/shift=5Fright=E3=81=A7=E8=B2=A0?= =?UTF-8?q?=E6=95=B0=E3=82=92=E6=8C=87=E5=AE=9A=E5=8F=AF=E8=83=BD=E3=81=A8?= =?UTF-8?q?=E8=AA=AD=E3=82=81=E3=82=8B=E8=A8=98=E8=BF=B0=E3=81=AE=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reference/algorithm/ranges_shift_left.md | 4 ++-- reference/algorithm/ranges_shift_right.md | 4 ++-- reference/algorithm/shift_left.md | 8 ++++++-- reference/algorithm/shift_right.md | 8 ++++++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/reference/algorithm/ranges_shift_left.md b/reference/algorithm/ranges_shift_left.md index 468fc83116..9e567fde3c 100644 --- a/reference/algorithm/ranges_shift_left.md +++ b/reference/algorithm/ranges_shift_left.md @@ -45,7 +45,7 @@ namespace std::ranges { ## 効果 -- `n <= 0`である場合、なにもしない +- `n == 0`である場合、なにもしない - `n >= last - first`である場合、なにもしない - `i < (last - first) - n`である非負の各`i`について、`first + n + i`位置の要素を`first + i`位置にムーブする - (1)では、`i = 0`から`i = (last - first) - n - 1`の順に処理する @@ -65,7 +65,7 @@ namespace std::ranges { ## 備考 -- シフト数として負数を指定するとなにも起こらないが、この関数には符号付き整数型を指定することとなっている。これは、Bidirectional Iterator向けの最適化した実装をする場合に[`std::prev()`](/reference/iterator/prev.md)関数を使用するため、そちらのパラメータ型と合わせたことによる +- シフト数として負数を指定することはできないが、この関数には符号付き整数型を指定することとなっている。これは、Bidirectional Iterator向けの最適化した実装をする場合に[`std::prev()`](/reference/iterator/prev.md)関数を使用するため、そちらのパラメータ型と合わせたことによる - `shift_left()`と[`shift_right()`](ranges_shift_right.md)で関数が分かれているのは、コンパイルしたコードサイズを小さくするためと、左シフトと右シフトでは最大パフォーマンスのための実装が異なるためである diff --git a/reference/algorithm/ranges_shift_right.md b/reference/algorithm/ranges_shift_right.md index d536d557ad..8ff494298c 100644 --- a/reference/algorithm/ranges_shift_right.md +++ b/reference/algorithm/ranges_shift_right.md @@ -46,7 +46,7 @@ namespace std::ranges { ## 効果 -- `n <= 0`である場合、なにもしない +- `n == 0`である場合、なにもしない - `n >= last - first`である場合、なにもしない - `i < (last - first) - n`である非負の各`i`について、`first + i`位置の要素を`first + n + i`位置にムーブする - (1)では、`I`型が[`bidirectional_iterator`](/reference/iterator/bidirectional_iterator.md)のモデルとなる場合は、`i = (last - first) - n - 1`から`i = 0`の順に処理する @@ -66,7 +66,7 @@ namespace std::ranges { ## 備考 -- シフト数として負数を指定するとなにも起こらないが、この関数には符号付き整数型を指定することとなっている。これは、Bidirectional Iterator向けの最適化した実装をする場合に[`std::prev()`](/reference/iterator/prev.md)関数を使用するため、そちらのパラメータ型と合わせたことによる +- シフト数として負数を指定することはできないが、この関数には符号付き整数型を指定することとなっている。これは、Bidirectional Iterator向けの最適化した実装をする場合に[`std::prev()`](/reference/iterator/prev.md)関数を使用するため、そちらのパラメータ型と合わせたことによる - [`shift_left()`](ranges_shift_left.md)と`shift_right()`で関数が分かれているのは、コンパイルしたコードサイズを小さくするためと、左シフトと右シフトでは最大パフォーマンスのための実装が異なるためである diff --git a/reference/algorithm/shift_left.md b/reference/algorithm/shift_left.md index 25010f71aa..d4534a50b9 100644 --- a/reference/algorithm/shift_left.md +++ b/reference/algorithm/shift_left.md @@ -34,8 +34,12 @@ namespace std { - `*first`の型が[ムーブ代入可能](/reference/type_traits/is_move_assignable.md)であること +## 事前条件 +`n >= 0` + + ## 効果 -- `n <= 0`である場合、なにもしない +- `n == 0`である場合、なにもしない - `n >= last - first`である場合、なにもしない - `i < (last - first) - n`である非負の各`i`について、`first + n + i`位置の要素を`first + i`位置にムーブする - (1)では、`i = 0`から`i = (last - first) - n - 1`の順に処理する @@ -52,7 +56,7 @@ namespace std { ## 備考 -- シフト数として負数を指定するとなにも起こらないが、この関数には符号付き整数型を指定することとなっている。これは、Bidirectional Iterator向けの最適化した実装をする場合に[`std::prev()`](/reference/iterator/prev.md)関数を使用するため、そちらのパラメータ型と合わせたことによる +- シフト数として負数を指定することはできないが、この関数には符号付き整数型を指定することとなっている。これは、Bidirectional Iterator向けの最適化した実装をする場合に[`std::prev()`](/reference/iterator/prev.md)関数を使用するため、そちらのパラメータ型と合わせたことによる - `shift_left()`と[`shift_right()`](shift_right.md)で関数が分かれているのは、コンパイルしたコードサイズを小さくするためと、左シフトと右シフトでは最大パフォーマンスのための実装が異なるためである diff --git a/reference/algorithm/shift_right.md b/reference/algorithm/shift_right.md index 06fe7d1acc..13ac718fb2 100644 --- a/reference/algorithm/shift_right.md +++ b/reference/algorithm/shift_right.md @@ -35,8 +35,12 @@ namespace std { - `ForwardIterator`型が、Bidirectional Iteratorの要件もしくは[ValueSwappable](/reference/concepts/ValueSwappable.md)の要件を満たすこと +## 事前条件 +`n >= 0` + + ## 効果 -- `n <= 0`である場合、なにもしない +- `n == 0`である場合、なにもしない - `n >= last - first`である場合、なにもしない - `i < (last - first) - n`である非負の各`i`について、`first + i`位置の要素を`first + n + i`位置にムーブする - (1)では、`ForwardIterator`型がBidirectional Iteratorの要件を満たす場合は、`i = (last - first) - n - 1`から`i = 0`の順に処理する @@ -53,7 +57,7 @@ namespace std { ## 備考 -- シフト数として負数を指定するとなにも起こらないが、この関数には符号付き整数型を指定することとなっている。これは、Bidirectional Iterator向けの最適化した実装をする場合に[`std::prev()`](/reference/iterator/prev.md)関数を使用するため、そちらのパラメータ型と合わせたことによる +- シフト数として負数を指定することはできないが、この関数には符号付き整数型を指定することとなっている。これは、Bidirectional Iterator向けの最適化した実装をする場合に[`std::prev()`](/reference/iterator/prev.md)関数を使用するため、そちらのパラメータ型と合わせたことによる - [`shift_left()`](shift_left.md)と`shift_right()`で関数が分かれているのは、コンパイルしたコードサイズを小さくするためと、左シフトと右シフトでは最大パフォーマンスのための実装が異なるためである