더북(TheBook)

2.6 | forward_list<T> 컨테이너 사용하기

 

forward_list 컨테이너는 단일 연결 리스트로 객체를 저장한다. forward_list 템플릿은 forward_list 헤더에 정의되어 있다. forward_listlist 컨테이너의 주된 차이점은 원소들을 역방향으로 순회할 수 없다는 것이다. 즉, 첫 번째부터 마지막까지 이동만 할 수 있다. forward_list의 단일 연결로 정해지는 특성들이 있다. 첫째, 역방향 반복자는 이용할 수 없다. forward_list에서는 constnon-const 순방향 반복자만 얻을 수 있고, 이들 반복자는 감소 연산을 사용할 수 없다. 오직 증가 연산만 사용할 수 있다. 둘째, 마지막 원소에 대한 참조를 반환하는 back() 멤버가 없다. 오직 front() 멤버만 있다. 셋째, 순차열의 끝에 도달하는 유일한 방법이 이전 원소를 가리키는 반복자에 증가 연산을 하는 것뿐이므로 push_back(), pop_back(), emplace_back() 연산은 이용할 수 없다. 응용프로그램에서 이러한 제약들을 만족하는 상황이라면 forward_list는 좋은 선택이다. forward_listlist 컨테이너보다 처리가 빠르고 메모리도 더 적게 사용한다.

forward_list 컨테이너의 생성자 종류는 list의 생성자와 같다. forward_list의 반복자는 순방향 반복자뿐이다. size() 멤버도 없고, 순방향 반복자에서 다른 순방향 반복자를 빼는 연산도 할 수 없지만, iterator 헤더에 정의된 distance() 함수로 순방향 리스트의 원소 개수를 구할 수는 있다.

std::forward_list<std::string> my_words {“three”, “six”, “eight”};
auto count = std::distance(std::begin(my_words), std::end(my_words)); // 결과는 3
 

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.