더북(TheBook)

2.5.5 원소에 접근하기

리스트의 front()back() 함수 멤버는 첫 번째 원소와 마지막 원소에 대한 참조를 반환한다. 빈 리스트에 이들 함수를 호출했을 때의 결과는 정의되지 않았으므로 호출하지 말자. 리스트 내부에 있는 원소에 접근하고 싶다면 반복자를 증가, 감소하면서 원하는 원소에 접근하면 된다. 앞서 본 것처럼 begin()end()는 첫 번째 원소 또는 마지막 원소에서 하나 더 뒤를 가리키는 양방향 반복자를 반환한다. rbegin()rend() 함수는 역방향으로 원소들을 이동할 수 있는 양방향 반복자를 반환한다. 리스트에 범위 기반 루프를 사용하면 반복자를 사용하지 않아도 모든 원소를 처리할 수 있다.

std::list<std::string> names {"Jane", "Jim", "Jules", "Janet"};
names.emplace_back("Ann");
std::string name("Alan");
names.emplace_back(std::move(name));
names.emplace_front("Hugo");
names.emplace(++begin(names), "Hannah");
for(const auto& name : names)
  std::cout << name << std::endl;

루프 변수 name은 리스트의 원소를 차례대로 참조하므로 루프는 문자열을 한 줄에 하나씩 출력하게 된다.

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