base() 함수는 역방향 반복자(reverse_iterator)가 실제로 가리키는 순방향 반복자를 반환한다.
반환된 순방향 반복자는 역방향 반복자가 가리키는 현재 요소의 다음 요소를 가리킨다.
base() 함수는 역방향 반복자에서 순방향 연산이 필요할 때 유용하게 사용된다.
reverse_iterator.base();
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {10, 20, 30, 40, 50};
// 역방향 반복자 선언 (끝에서 시작)
std::vector<int>::reverse_iterator rit = vec.rbegin();
// 역방향 반복자를 순방향 반복자로 변환
auto it = rit.base();
std::cout << "Element at base of reverse_iterator: " << *it << "\n"; // 출력: 20
return 0;
}
rit은 rbegin()을 통해 마지막 요소(50)를 가리키는 역방향 반복자다. rit.base()는 50 다음의 순방향 반복자(즉, 20의 위치)를 반환한다. base()를 사용하면 다음 순방향 요소에 대한 반복자가 반환된다.#include <iostream>
#include <string>
int main() {
std::string str = "Hello";
// 역방향 반복자 선언
std::string::reverse_iterator rit = str.rbegin();
// 역방향 반복자를 순방향 반복자로 변환
auto it = rit.base();
std::cout << "Element at base of reverse_iterator: " << *it << "\n"; // 출력: o
return 0;
}
rit.base()가 가리키는 위치는 역방향 반복자가 가리키는 위치보다 한 칸 앞의 순방향 위치다. 따라서 *it을 직접 참조하면 그 앞의 값이 출력된다.#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string str = "Hello, World!";
// 역방향 반복자를 사용하여 문자열 뒤집기
std::string reversedStr(str.rbegin(), str.rend());
std::cout << "Reversed String: " << reversedStr << "\n"; // 출력: !dlroW ,olleH
return 0;
}
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {10, 20, 30, 40, 50};
// 역방향 반복자를 사용하여 [20, 40] 구간 뒤집기
std::reverse(vec.rbegin() + 1, vec.rend() - 1);
// 결과 출력
for (int num : vec) {
std::cout << num << " ";
}
// 출력: 10 40 30 20 50
return 0;
}