더북(TheBook)

  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')
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.