C++의 배열 클래스(std::array)는 매우 효율적일 뿐만 아니라 자신의 크기까지 스스로 알고 있는 똑똑한 컨테이너입니다. 일반적인 C 스타일 배열과 달리 크기 정보를 함께 관리하므로 더 안전하고 편리하게 사용할 수 있습니다.
배열 연산에 사용되는 주요 함수
size(): 배열의 크기, 즉 배열에 저장된 요소의 개수를 반환합니다.max_size(): 배열이 담을 수 있는 최대 요소 개수를 반환합니다.get(),at(),operator[]: 배열 요소에 접근할 때 사용합니다.front(): 배열의 첫 번째(앞쪽) 요소를 반환합니다.back(): 배열의 마지막(뒤쪽) 요소를 반환합니다.empty(): 배열이 비어 있으면 true를, 그렇지 않으면 false를 반환합니다.fill(): 배열 전체를 특정 값으로 채웁니다.swap(): 한 배열의 요소들을 다른 배열과 서로 맞바꿉니다.
아래 예제는 위에서 소개한 모든 연산을 실제로 구현한 코드입니다.
예제 코드
#include<iostream>
#include<array>
using namespace std;
int main() {
array<int,4>a = {10, 20, 30, 40};
array<int,4>a1 = {50, 60, 70, 90};
cout << "배열의 크기는 : ";
//size() 함수로 배열의 크기 확인
cout << a.size() << endl;
//배열이 담을 수 있는 최대 요소 개수
cout << "배열이 담을 수 있는 최대 요소 개수는 : ";
cout << a.max_size() << endl;
//at()을 사용하여 배열 요소 출력
cout << "at()으로 출력한 배열 요소들 : ";
for ( int i=0; i<4; i++)
cout << a.at(i) << " ";
cout << endl;
//get()을 사용하여 배열 요소 출력
cout << "get()으로 출력한 배열 요소들 : ";
cout << get<0>(a) << " " << get<1>(a) << " "<<endl;
cout << "operator[]로 출력한 배열 요소들 : ";
for ( int i=0; i<4; i++)
cout << a[i] << " ";
cout << endl;
//배열의 첫 번째 요소 출력
cout << "배열의 첫 번째 요소는 : ";
cout << a.front() << endl;
//배열의 마지막 요소 출력
cout << "배열의 마지막 요소는 : ";
cout << a.back() << endl;
cout << "swap 전 두 번째 배열의 요소들 : ";
for (int i=0; i<4; i++)
cout << a1[i] << " ";
cout << endl;
//a1의 값을 a와 맞바꾸기
a.swap(a1);
//swap 후 첫 번째와 두 번째 배열 출력
cout << "swap 후 첫 번째 배열의 요소들 : ";
for (int i=0; i<4; i++)
cout << a[i] << " ";
cout << endl;
cout << "swap 후 두 번째 배열의 요소들 : ";
for (int i = 0; i<4; i++)
cout << a1[i] << " ";
cout << endl;
//배열이 비어 있는지 확인
a1.empty()? cout << "배열이 비어 있습니다":
cout << "배열이 비어 있지 않습니다";
cout << endl;
//배열을 1로 채우기
a.fill(1);
//fill 연산 후 배열 내용 출력
cout << "fill 연산 후 배열의 내용은 : ";
for ( int i = 0; i<4; i++)
cout << a[i] << " ";
return 0;
}실행 결과
배열의 크기는 : 4 배열이 담을 수 있는 최대 요소 개수는 : 4 at()으로 출력한 배열 요소들 : 10 20 30 40 get()으로 출력한 배열 요소들 : 10 20 operator[]로 출력한 배열 요소들 : 10 20 30 40 배열의 첫 번째 요소는 : 10 배열의 마지막 요소는 : 40 swap 전 두 번째 배열의 요소들 : 50 60 70 90 swap 후 첫 번째 배열의 요소들 : 50 60 70 90 swap 후 두 번째 배열의 요소들 : 10 20 30 40 배열이 비어 있지 않습니다 fill 연산 후 배열의 내용은 : 1 1 1 1