일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- HTML #CSS
- 컴퓨터공학 #Java #자바 #클래스 #객체 #인스턴스
- 잔
- 컴퓨터공학 #c #c언어 #문자열입력
- BOJ #컴퓨터공학 #C++ #알고리즘 #자료구조
- 컴퓨터공학 #자료구조 #스택 #c++ #알고리즘 #백준문제풀이
- Today
- Total
영벨롭 개발 일지
[C++]std::array 클래스 사용법 본문
std::array 는 원소의 타입과 배열 크기를 매개변수로 사용하는 클래스 템플릿입니다.
고정된 길이의 배열을 표현할 때 쓰이며 메모리를 자동으로 할당하고 해제합니다.
1. 헤더파일
#include<array>
2. 선언
array<원소의 type, 배열 크기> arr;
array<int, 10> arr1; //int 타입의 크기가 10인 배열 선언
array<double, 5> arr2; //double 타입의 크기가 6인 배열 선언
array<int, 3> arr3 = {1, 2, 3}; //int 타입의 크기가 3인 배열 선언 및 초기화
3. 원소 접근
(1) arr.at(index)
배열의 index 번째 원소를 반환합니다.
at() 함수를 사용하면 인자로 전달된 index 값이 유효한지 예외 검사를 합니다.
예외 검사를 하기 때문에 [ ] 보다는 느립니다.
(2) arr[index]
배열의 index 번째 원소를 반환합니다.
[ ] 연산자를 사용하면 예외 검사는 하지 않지만, at() 보다는 연산이 빠릅니다.
(3) arr.front()
배열의 맨 앞 원소를 반환합니다.
(4) arr.back()
배열의 맨 뒤 원소를 반환합니다.
(5) arr.data()
배열을 포인터 타입으로 반환합니다. 즉 배열의 첫 번째 원소의 주소를 반환합니다.
array<int, 4> arr = {1, 2, 3, 4};
cout << arr.at(3) << endl; //4
cout << arr[3] << endl; //4
cout << arr.at(4) << endl; //out_of_range 예외 발생
cout << arr.front() << endl; //1
cout << arr.back() << endl; //4
cout << *(arr.data() + 1) << endl; //2
4. 반복자
반복자를 사용하면 소스 코드의 재사용성, 유지 보수, 가독성 측면에서 이점을 얻을 수 있습니다.
또한 범위 기반 for(range-based for) 문법을 이용하여 원소에 차례대로 접근 할 수 있습니다.
(1) arr.begin()
begin() 함수는 배열의 첫 번째 원소를 가리키는 반복자를 반환합니다.
(2) arr.end()
end() 함수는 배열의 마지막 원소 다음을 가리키는 반복자를 반환합니다.
(3) arr.cbegin(), arr.cend()
반복자를 const 형태로 반환하여 반복자를 이용하여 원소를 수정할 수 없습니다.
(4) arr.rbegin(), arr.rend() / arr.crbegin(), arr.crend()
배열을 거꾸로 했을 때의 첫 번째 원소와 마지막 다음 위치의 반복자를 반환합니다.
(cr은 r의 const 버전)
array<int, 5> arr = {1, 2, 3, 4, 5};
for(auto element : arr)
{
cout << element << " ";
}
//1 2 3 4 5
for(auto it = arr.begin(); it != arr.end(); i++)
{
auto element = (*it);
cout << elemnet << " ";
}
//1 2 3 4 5
5. 사이즈
(1) arr.size()
배열의 크기를 반환합니다.
(2) arr.max_size()
배열의 최대 사이즈를 반환합니다.
array 컨테이너는 고정된 길이의 배열을 표현할 때 사용한다고 했죠? 때문에 결과적으로 size()와 max_size()는 같은 값을 반환합니다.
6. 그 외 함수들
(1) arr.empty()
배열이 비어있는지 확인합니다.
비어있다면 true, 그렇지 않다면 false를 반환합니다.
(2) arr.swap(arr2)
배열 arr과 arr2의 원소들을 swap 하는 함수입니다.
이때 두 배열의 타입과 크기는 동일해야 합니다.
(3) arr.fill(data)
배열의 원소를 data로 모두 채워줍니다.
'Programming Language > C & C++' 카테고리의 다른 글
[C++]STL 해시 테이블 unordered_set과 unordered_map (0) | 2022.04.26 |
---|---|
[C++]순열 next_permutation STL 사용하기 (0) | 2022.03.31 |
[C++]system() 함수 - 몇 가지 명령어 사용해보기 (0) | 2022.03.06 |
[C++] string 라이브러리 사용법 (0) | 2022.02.21 |
[C언어]문자열 입력 함수: scanf(), gets(), fgets() (0) | 2022.02.15 |