การสลับช่วงย่อยระหว่างคอนเทนเนอร์ต่างกัน (Swapping Subranges from Different Containers)
ใน C++ สามารถสลับองค์ประกอบระหว่างคอนเทนเนอร์ที่ต่างกันได้ด้วย std::swap_ranges จาก <algorithm>
ตัวอย่าง
#include <algorithm>
#include <iostream>
#include <list>
#include <vector>
using namespace std;
int main() {
vector<int> v = { -10, -15, -30, 20, 500 };
list<int> lt = { 10, 50, 30, 100, 50 };
// สลับ 3 องค์ประกอบแรกของ v กับ 3 องค์ประกอบแรกของ lt
swap_ranges(v.begin(), v.begin() + 3, lt.begin());
for (int n : v) cout << n << ' ';
cout << '\n';
for (int n : lt) cout << n << ' ';
cout << endl;
return 0;
}
ผลลัพธ์
10 50 30 20 500 -10 -15 -30 100 50
คำอธิบาย
swap_ranges(first1, last1, first2)สลับองค์ประกอบในช่วง[first1, last1)กับช่วงเริ่มต้นที่first2(ความยาวเท่ากัน)- ทำงานได้กับคอนเทนเนอร์ที่ต่างกัน (vector กับ list)
- ต้องการ iterator แบบ forward iterator ขึ้นไป
ข้อควรระวัง
- ช่วงที่สองต้องมีขนาดพอสำหรับการสลับ (undefined behavior ถ้าไม่พอ)
- ไม่คืนค่าอะไร (void)