Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การสลับช่วงย่อยระหว่างคอนเทนเนอร์ต่างกันใน C++

การสลับช่วงย่อยระหว่างคอนเทนเนอร์ต่างกัน (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)