<xstd/bits/bit_algorithm/bit_shift_left.hpp>, <xstd/bits/bit_algorithm/bit_shift_right.hpp>¶
bit_shift_left, bit_shift_right¶
As ranges::shift_left and ranges::shift_right in [alg.shift], with:
- Constraints: As for
bit_reverse. - Preconditions:
0 <= n, checked by anassert. - Effects: None where
n == 0orn >= N. Otherwisebit_shift_leftmoves positioni + ntoi, andbit_shift_rightpositionitoi + n, for everyi < N - n. Thenpositions vacated arefalse, where [alg.shift] leaves them valid but unspecified. - Returns: As [alg.shift]: for
bit_shift_left,{ranges::begin(r), ranges::begin(r) + (N - n)}wheren < Nand{ranges::begin(r), ranges::begin(r)}otherwise; forbit_shift_right,{ranges::begin(r) + n, ranges::end(r)}wheren < Nand{ranges::end(r), ranges::end(r)}otherwise. - Complexity: O(
N/D). - Remarks: A sequence's front is a bit string's low end, so
bit_shift_leftis the storage's>>=andbit_shift_rightits<<=.