필요할때 보기 위해서 모두의 코드 글을 가져와서 약간 정리함.


헤더파일

#include <array>


생성자

std::array<int, 3> arr = {1, 2, 3};
std::array<int, 3> arr{1, 2, 3};


소멸자

배열 소멸 시에 모든 원소들의 소멸자를 호출함.


대입 연산자 (operator=)

std::array<int, 3> a = {1, 2, 3};
std::array<int, 3> b;

b = a;  // b 에 {1,2,3} 이 들어감.

C언어의 배열은 이러한 것이 불가능하고, memcpy등을 사용해야함.


멤버 접근 함수 at( ), operator[ ]

  • at : 인덱스가 배열 범위를 벗어나면 예외를 throw
  • operator[ ]: 배열의 범위를 체크하지 않음.
std::array<int,3> arr{1,2,3};

try
{
    arr.at(99999999);
}
catch(std::out_of_range const& exc)
{
     std::cout << "예외 발생 : " << exc.what() << '\n';
}


front( ), back( )

첫번째와 마지막 원소의 참조자를 리턴함.

배열의 크기가 0일때는 사용 불가능.

array<int, 3> arr{ 1,2,3 };
cout<<arr.front(); //1 출력


data( )

배열의 시작 주소값을 리턴

array<int, 3> arr{ 1,2,3 };
cout << *arr.data(); //1 출력


반복자들

‘c’가 붙은 것은 상수 반복자를 리턴함.

  • begin , cbegin : 시작점을 나타내는 반복자를 리턴.
  • end , cend : 끝을 나타내는 반복자를 리턴.
  • rbegin , crbegin : 역참조 반복자의 시작점을 리턴.
  • rend , crend : 역참조 반복자의 끝점을 리턴.
	std::array<int, 3> data = { 1, 2, 3 };

	std::cout << "정방향 반복자 : ";
	for (auto itr = data.cbegin(); itr != data.cend(); ++itr) 
	{
		std::cout << *itr << " ";
	}
	std::cout << std::endl;

	std::cout << "역방향 반복자 : ";
	for (auto itr = data.crbegin(); itr != data.crend(); ++itr) 
	{
		std::cout << *itr << " ";
	}
	std::cout << std::endl;

//출력
정방향 반복자 : 1 2 3
역방향 반복자 : 3 2 1


empty( )

크기가 0인지 확인.

bool을 리턴.


size( )

배열의 원소의 개수를 리턴


max_size( )

배열의 최대 원소 개수를 리턴.

사실 size와 max_size는 둘이 같은 것을 리턴함.

배열의 크기는 바뀔 수 없기 때문.


fill( )

배열의 원소들을 인자로 전달된 값으로 채움.

std::array<int, 5> arr;
arr.fill(3);  // arr 은 {3,3,3,3,3}


swap()

두 배열의 내용을 바꿈

std::array<int, 5> arr1;
arr1.fill(1);  // arr 은 {1,1,1,1,1}

std::array<int, 5> arr2;
arr2.fill(2);  // arr 은 {3,3,3,3,3}

swap(arr1, arr2);

카테고리:

업데이트:

댓글남기기