더북(TheBook)

size() 함수가 있다는 건 array 컨테이너가 원소의 전체 개수를 알고 있다는 뜻이므로 표준 배열에는 없는 장점이다. array 컨테이너를 인수로 받은 함수는 size() 멤버를 호출해서 원소의 전체 개수를 구하면 된다. array 컨테이너에 원소가 하나도 없는지 확인할 때는 size()를 호출할 필요가 없다. 컨테이너가 비어 있으면 true를 반환하는 empty() 멤버를 사용하면 된다.

if(values.empty())
   std::cout << "The container has no elements.\n";
else
   std::cout << "The container has " << values.size() << " elements.\n";

하지만, array 컨테이너는 생성될 때 크기가 정해지고 변경될 수 없기 때문에 array 컨테이너가 비어 있는 모습을 상상하기는 어렵다. 빈 array 컨테이너 인스턴스를 생성하는 유일한 방법은 두 번째 템플릿 매개변수를 0으로 지정하는 것이다. 이렇게 지정하는 일은 매우 드물다. 그러나 empty()를 호출하는 메커니즘은 다른 컨테이너에서도 같으므로 원소들의 개수가 바뀌거나 원소가 삭제되더라도 empty()는 일관되게 동작한다.

반복자를 이용할 수 있는 컨테이너에는 범위 기반 for 루프를 사용할 수 있으니 values 컨테이너에 있는 원소들의 합계도 간단하게 구할 수 있다.

double total {};
for(auto&& value : values)
  total += value;

물론, 함수에 컨테이너를 인수로 전달해도 가능하다. array 컨테이너의 front()back() 함수 멤버는 예상대로 첫 번째 원소와 마지막 원소에 대한 참조를 반환한다. data() 함수 멤버는 &front()를 반환한다. &front()는 컨테이너 내부에서 실제로 원소들을 저장하고 있는 표준 배열의 주소다. 이를 사용할 일은 많지 않다.

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