더북(TheBook)

2.2.3 array 컨테이너의 비교

array<T,N> 컨테이너의 크기가 같고, 원소들이 같은 타입이고, 이 타입이 비교 연산을 지원한다면 비교 연산자를 사용해 두 컨테이너 전체를 비교할 수 있다. 예제로 보자.

std::array<double,4> these {1.0, 2.0, 3.0, 4.0};
std::array<double,4> those {1.0, 2.0, 3.0, 4.0};
std::array<double,4> them  {1.0, 3.0, 3.0, 2.0};
 
if (these == those) std::cout << "these and those are equal."    << std::endl;
if (those != them)  std::cout << "those and them are not equal." << std::endl;
if (those < them)   std::cout << "those are less than them."     << std::endl;
if (them > those) std::cout   << "them are greater than those."  << std::endl;

두 컨테이너의 원소가 하나씩 비교된다. ==의 결과가 true가 되려면 대응하는 모든 원소가 일치해야 한다. 불일치(!=)가 되려면 대응하는 원소 쌍이 하나라도 true가 아닌 원소가 있어야 한다. 나머지 비교 연산에서는 서로 다른 원소 쌍이 처음 발견되면 결과를 반환한다. 이는 사전에서 단어들의 순서를 정하는 방식과 본질적으로 같다. 사전에서는 두 단어를 한 글자씩 비교하면서 서로 다른 문자 쌍이 처음 발견되면 이 문자 쌍으로 단어의 순서를 결정한다. 코드 조각에서 모든 비교 연산은 true이므로 코드를 실행하면 네 가지 메시지 모두 출력된다.

표준 배열과 달리 두 array 컨테이너가 같은 타입, 같은 개수라면 array 컨테이너를 다른 array 컨테이너에 할당하는 것도 가능하다.

them = those; // those의 모든 원소를 them에 복제한다

할당문의 왼쪽에 있는 array 컨테이너(them)의 원소들은 할당문의 오른쪽에 있는 array 컨테이너(those)의 원소들로 덮어 써진다.

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