더북(TheBook)

list<T> 컨테이너에서 T 객체는 노드 객체로 캡슐화되고, 노드 객체는 리스트에서 이전 노드와 다음 노드의 포인터를 관리한다. 이들 포인터로 노드들의 하나의 체인으로 묶어두고, 어느 위치에서든 포인터를 따라가기만 하면 원소들의 체인을 돌아다닐 수 있다. 첫 번째 원소 앞에는 원소가 없으므로 첫 번째 원소에서 이전 원소를 가리키는 포인터는 nullptr가 되고, 마찬가지 이유로 마지막 원소에서 다음 원소를 가리키는 포인터도 nullptr가 된다. 이를 이용하면 체인의 끝에 도달했는지 알 수 있다. list<T> 인스턴스는 첫 번째 노드와 마지막 노드에 대한 포인터를 알고 있다. 이를 이용하면 양쪽 끝에 있는 객체에 접근할 수 있고, 어느 한쪽 끝에서 시작하더라도 순차열에서 원소들의 전체 리스트를 가져올 수 있다.

다른 순차열 컨테이너와 마찬가지로 list 컨테이너도 다양한 반복자를 이용할 수 있다. 리스트에 있는 원소들을 랜덤으로 접근할 수는 없으므로 얻을 수 있는 반복자는 양방향 반복자(bidirectional iterator)다. list를 인수로 begin()을 호출하면 첫 번째 원소를 가리키는 반복자를 반환하고, end()를 호출하면 마지막 원소 하나 더 뒤를 가리키는 반복자를 반환하므로 이를 이용해서 다른 순차열 컨테이너와 마찬가지로 원소들의 전체 범위를 지정할 수 있다. 다른 반복자와 마찬가지로 rbegin(), rend(), crbegin(), crend(), cbegin(), cend()를 호출해서 역방향 반복자와 const 반복자를 얻을 수 있다.

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