티스토리 뷰

언어/C++

[C++] std::array

js0331 2020. 3. 28. 14:01

std::array

 

헤더 파일 선언 및 변수 선언

#include<array>

std::array<int, 3> myArr;	// declare integer array with length 3

고정 배열을 선언한 것 처럼 array의 배열은 컴파일 타임에 설정되어야 한다.

 

std::array초기화 리스트(initializer list) 또는 유니폼 초기화(uniform initialization)를 사용해서 초기화할 수 있다.

std::array<int, 5> myArr1 = {1, 2, 3, 4, 5};
std::array<int, 5> myArr2{1, 2, 3, 4, 5};

 

참고로, 내장된 배열과 다르게 std::array의 배열길이는 생략이 불가능하다.

 

 

std::array는 배열요소의 접근하는 방법으로서 .at()을 지원한다.

std::array<int, 5> myArr { 9, 7, 5, 3, 1 };

myArr.at(1) = 6; // array element 1 valid, sets array element 1 to value 6
myArr.at(9) = 10; // array element 9 is invalid, will throw error

위 예제에서 array.at(1)을 호출하면 배열 요소 1이 유효한지 검사하고, 배열 요소 1에 대한 참조를 반환한다. 그러나 array.at(9)을 호출하면 배열 요소 9가 배열의 범위를 벗어났기 때문에 array.at(9)는 실패한다.

이때 참조를 반환하는 대신 예외를 throw한다.(std::out_of_range)

 

at() 함수는 유효 범위 검사를 하므로 operator[]보다는 느리지만, 더 안전하다.

 

std::array는 항상 참조로 전달하는 것이 좋다.

#include <iostream>
#include <array>

void printLength(const std::array<double, 5>& myArray)
{
    std::cout << "length: " << myArray.size();
}

 

길이를 파악하는 방법으로서는 .size() 멤버함수가 있다.

 

.

.

.

 

함수정리

https://blockdmask.tistory.com/332

'언어 > C++' 카테고리의 다른 글

8.5 위임 생성자  (0) 2020.04.22
8.4 생성자 멤버 초기화 목록  (0) 2020.04.22
8.3 생성자 Constructors  (0) 2020.04.22
8.2 캡슐화, 접근 지정자, 접근 함수  (0) 2020.04.22
[C++] 문자열 / std::string  (0) 2020.03.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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 31
글 보관함