1
shift_right () ตั้งใจจะนำไปใช้ใน C ++ 20 อย่างไร
ใน C ++ 20 <algorithm>กำไรส่วนหัวทั้งสองขั้นตอนวิธีการใหม่และshift_left() shift_right()ทั้งสองคนยอมรับ LegacyForwardIterator ใด ๆ สำหรับshift_left()มันระบุไว้ว่า "การเคลื่อนไหวจะดำเนินการเพื่อเพิ่มการiเริ่มต้นจาก0"; สำหรับshift_right()มันมีการระบุว่า "ถ้าForwardItตรงตามความต้องการ LegacyBidirectionalIterator แล้วย้ายจะดำเนินการในลำดับที่ลดลงของการiเริ่มต้นจากlast - first - n - 1" ฉันคิดว่าวิธีง่าย ๆ ที่จะใช้shift_left(): template <typename ForwardIt> constexpr inline ForwardIt shift_left(ForwardIt first, ForwardIt last, typename std::iterator_traits<ForwardIt>::difference_type n) { if (n <= 0) return last; ForwardIt it = first; for (; …