3. std::forward_list를 이용하여 같은 작업을 수행하고, 벡터 사용 방법과의 차이점을 살펴보겠습니다.
std::forward_list<std::string> fwd(vec.begin(), vec.end());
auto it1 = fwd.begin();
std::cout << "가장 최근 우승자: " << *it1 << std::endl;
advance(it1, 5); // 선형 시간
std::cout << "5년 전 우승자: " << *it1 << std::endl;
// std::forward_list는 순방향으로만 이동할 수 있으므로
// 아래 코드는 에러가 발생합니다.
// advance(it1, -2);
}
4. 위 예제 코드를 실행하면 다음과 같은 출력이 나타납니다.
가장 최근 우승자: Lewis Hamilton
8년 전 우승자: Fernando Alonso
그후 3년 뒤 우승자: Sebastian Vettel
가장 최근 우승자: Lewis Hamilton
5년 전 우승자: Sebastian Vettel
5. 만약 다음 코드처럼 std::forward_list 반복자에서 숫자 값을 더하면 어떻게 될까요?
it1 += 2;
이 경우 다음과 같은 에러 메시지가 나타납니다.
no match for 'operator+=' (operand types are std::_Fwd_list_iterator<int>' and 'int')