💡 퀵 접속: cpp.kr/swap_ranges
C++ 표준 라이브러리의 알고리즘으로, 두 범위의 요소들을 서로 교환합니다. swap_ranges는 원본 범위를 직접 수정하며, 두 범위의 요소 타입이 같아야 합니다. 이 함수는 [first1, last1) 범위의 각 요소를 [first2, first2 + (last1 - first1)) 범위의 해당 요소와 교환합니다.
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v1 = {1, 2, 3, 4, 5};
std::vector<int> v2 = {10, 20, 30, 40, 50};
std::cout << "교환 전:" << std::endl;
std::cout << "v1: ";
for (int x : v1) std::cout << x << " ";
std::cout << "\nv2: ";
for (int x : v2) std::cout << x << " ";
std::cout << std::endl;
// 두 벡터의 요소들 교환
std::swap_ranges(v1.begin(), v1.end(), v2.begin());
std::cout << "\n교환 후:" << std::endl;
std::cout << "v1: ";
for (int x : v1) std::cout << x << " ";
std::cout << "\nv2: ";
for (int x : v2) std::cout << x << " ";
std::cout << std::endl;
return 0;
}
실행 결과:
교환 전: v1: 1 2 3 4 5 v2: 10 20 30 40 50 교환 후: v1: 10 20 30 40 50 v2: 1 2 3 4 5
#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string s1 = "Hello";
std::string s2 = "World";
std::cout << "교환 전:" << std::endl;
std::cout << "s1: " << s1 << std::endl;
std::cout << "s2: " << s2 << std::endl;
// 두 문자열의 문자들 교환
std::swap_ranges(s1.begin(), s1.end(), s2.begin());
std::cout << "\n교환 후:" << std::endl;
std::cout << "s1: " << s1 << std::endl;
std::cout << "s2: " << s2 << std::endl;
return 0;
}
실행 결과:
교환 전: s1: Hello s2: World 교환 후: s1: World s2: Hello
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
class Person {
std::string name;
int age;
public:
Person(const std::string& n, int a) : name(n), age(a) {}
void print() const {
std::cout << name << " (" << age << "세)" << std::endl;
}
};
int main() {
std::vector<Person> v1 = {
Person("Alice", 20),
Person("Bob", 30),
Person("Charlie", 40)
};
std::vector<Person> v2 = {
Person("David", 25),
Person("Eve", 35),
Person("Frank", 45)
};
std::cout << "교환 전:" << std::endl;
std::cout << "v1:" << std::endl;
for (const auto& p : v1) p.print();
std::cout << "v2:" << std::endl;
for (const auto& p : v2) p.print();
// 두 벡터의 요소들 교환
std::swap_ranges(v1.begin(), v1.end(), v2.begin());
std::cout << "\n교환 후:" << std::endl;
std::cout << "v1:" << std::endl;
for (const auto& p : v1) p.print();
std::cout << "v2:" << std::endl;
for (const auto& p : v2) p.print();
return 0;
}
실행 결과:
교환 전: v1: Alice (20세) Bob (30세) Charlie (40세) v2: David (25세) Eve (35세) Frank (45세) 교환 후: v1: David (25세) Eve (35세) Frank (45세) v2: Alice (20세) Bob (30세) Charlie (40세)
| 함수 | 설명 |
|---|---|
| swap_ranges(first1, last1, first2) | [first1, last1) 범위의 각 요소를 [first2, first2 + (last1 - first1)) 범위의 해당 요소와 교환 |