Home [C++ 공부] 기초 - 배열
Post
Cancel

[C++ 공부] 기초 - 배열

코딩 뉴비의 공부 정리 및 기록용 포스트입니다.
잘못된 내용을 바로잡아주시면 감사하겠습니다.


C++ 배열 (Arrays)

배열 선언하기


특정 자료형 값들의 집합체인 배열을 선언한다.

자료형 배열 이름 배열 길이; 의 형식으로 선언한다.

1
2
int num[3];
string fruits[3];

선언할 때 특정 값을 할당할 수 있다.

1
2
int num[3] = {1, 2, 3};
string fruits[3] = {apple, melon, banana};

특정 값을 부여하며 선언할 때에는 배열의 크기를 생략해도 된다. 컴파일러가 자동으로 값들을 읽어 크기를 결정한다.

1
int num[] = {1, 2, 3};


배열의 값 참조하기


다음과 같이 배열의 값을 참조한다.

1
2
3
int num[3] = {1, 2, 3};

cout << num[0]; // 1

배열의 인덱스는 0부터 시작한다.

같은 방식으로 배열 내부의 값을 변경한다.

1
2
3
num[0] = 100;

cout << num[0]; // 100


배열의 크기 얻기


1. sizeof()

sizeof() 연산자를 사용해서 배열의 크기를 알아낼 수 있다.

sizeof(array) 는 배열의 전체 크기를 바이트 단위로 반환하므로 해당 배열을 구성하는 자료형의 크기로 나누어주어야 한다.

1
2
3
int arr[3] = {1, 2, 3};
cout << sizeof(arr) << '\n'; // 12
cout << sizeof(arr) / sizeof(int); // 3 -> ( 12 / 4 )

2. std::array

<array> 헤더파일을 추가한다.

1
2
int arr[3] = {1, 2, 3};
cout << arr.size() << '\n'; // 3


다차원 배열 (Multi-Dimensional Arrays)


배열의 각 요소를 배열로 설정할 수 있다.

1
2
3
4
5
6
7
8
string letters[2][4] = {
    {"A", "B", "C", "D"}, 
    {"E", "F", "G", "H"}
};

cout << letters[0][0] << endl; // A
cout << letters[1][0] << endl; // E
cout << letters[1][3] << endl; // H


C++ vector

벡터 vector 는 메모리를 자동으로 할당하는 배열의 일종이다.

먼저 헤더파일을 추가한다.

1
#include <vector>

벡터 선언


1
2
3
4
5
vector<int> v1;

vector<int> v2 = {1, 2, 3, 4, 5};

vector<int> v3 {1, 2, 3, 4, 5};

<> 내부에 자료형, 뒤에는 벡터 이름을 붙인다.

다음과 같은 방식으로 세부사항을 추가하여 선언할 수 있다.

1
2
3
4
5
6
7
vector<int> v = {1, 2, 3, 4, 5};
vector<int> v {1, 2, 3, 4, 5}; // 내부 값 초기화

vector<int> v(5); // 0으로 초기화된 5개 원소의 vector v 생성
vector<int> v(5, 2); // 2로 초기화된 5개 원소의 vector v 생성

vector<int> v2(v); // v vector를 복사해서 v2 vector 생성


벡터의 요소 관련 함수


1
vector<int> v;
Function Description
v.assign(5, i) 5개의 원소를 i로 할당
v.at(index) indxe의 요소를 참조. 범위의 유효성을 검사
v[index] index의 요소를 참조. 범위의 유효성을 검사하지 않으므로 at(idx) 보다 속도가 더 빠름
v.front() 첫번째 요소를 참조.
v.back() 마지막 요소를 참조.
v.clear() 모든 요소를 제거. 메모리는 남아있음
v.push_back(i) 벡터의 끝에 i를 추가.
v.pop_back() 벡터의 마지막 요소를 제거.
v.insert(p1, p2, p3) p1번째 위치에 p2개의 p3를 삽입.
p3를 생략하면 한개의 p2를 삽입.
v.resize(n) 벡터의 크기를 n으로 변경함. 크기가 기존보다 작아지면 뒤의 값부터 삭제, 기존보다 커지면 기본값 0으로 초기화
v.resize(n, i) 벡터의 크기를 n으로 변경함. 크기가 기존보다 커질 때 초기화되는 값을 i로 설정
v.size() 벡터의 크기를 반환함.


예시


1
2
v.at(0) = 100;
cout << v.at(0) << endl; // 100
1
2
3
4
5
6
vector<int> v1 = {1, 2, 3, 4, 5};

v1.resize(3); // v1 = {1, 2, 3}
v1.resize(5, 10); // v1 = {1, 2, 3, 10, 10}

v1.insert(0, 2, 0); // v1 = {0, 0, 1, 2, 3, 10, 10}


Useful Links


C++ Arrays
vector container 정리 및 사용법

This post is licensed under CC BY 4.0 by the author.