트랙
/
C++
C++
/
학습 과정
/
배열과 벡터
배열

배열과 벡터 에서 C++

3개의 연습 문제

배열과 벡터 소개

배열과 벡터

C++는 같은 타입의 원소를 순서대로 저장할 수 있는 여러 가지 컨테이너를 제공해요. 크기가 고정된 컨테이너를 위한 std::array가 있고, 크기를 동적으로 조절할 수 있는 std::vector도 있어요.

생성

배열이나 벡터를 선언할 때는 컨테이너가 담을 원소의 타입을 지정해야 해요. 배열은 크기도 함께 지정해야 하고요. 다음 예제를 보면 두 컨테이너 타입을 어떻게 초기화하는지 알 수 있어요:

#include <array>
#include <string>

// std::array<element_type, size> variable_name {list of elements}
std::array<std::string, 3> indie_rock {"yeah", "yeah", "yeah"};
// indie_rock contains the elements "yeah" three times

벡터는 나중의 확장을 위해 메모리를 할당하므로 보통 더 많은 공간이 필요해요. 크기는 지정할 필요가 없어요:

#include <vector>

// std::vector<element_type> variable_name {list of elements}
std::vector<int> countdown {3, 2, 1};
// my_vector contains the elements 3, 2 and 1

참고: 템플릿 개념 뒤에 숨은 정확한 동작 원리를 지금 알 필요는 없어요. 템플릿은 커리큘럼 트리에서 더 아래쪽에 별도의 개념으로 등장해요.

원소 접근

벡터와 배열은 원소에 접근할 때 같은 함수를 사용해요. 멤버 함수 front와 back으로 컨테이너의 첫 번째와 마지막 원소를 가져올 수 있어요. 특정 원소에 접근하려면 at과 [] 연산자도 사용할 수 있고요.

countdown[0];
// => 3
countdown.at(2);
// => 1
countdown[1] = 4;
// countdown now contains 3, 4 and 1
indie_rock.back() = "yeahs";
// indie_rock is now "yeah", "yeah", "yeahs"

참고: 컨테이너의 범위를 벗어난 위치를 고르면 []가 정의되지 않은 동작을 일으킬 수 있어요. at 함수는 예외를 발생시키는데, 길게 보면 이 편이 더 편할 수 있어요.

벡터 수정자

vector는 크기가 고정되어 있지 않아서 원소를 추가하거나 제거할 수 있어요. 이를 위한 대표적인 함수 두 가지가 emplace_back과 pop_back이에요.

std::vector<std::string> witches {"Holly", "Alyssa", "Shannen"};
witches.pop_back();
// Shannen is no longer with the witches
witches.emplace_back("Rose");
// Rose has joined the team

용량

멤버 함수 empty로 컨테이너가 비어 있는지 확인할 수 있어요. 원소의 개수를 알고 싶다면 size를 사용하면 돼요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요

배열과 벡터 배우기

연습이 잠겨 있어요

배열과 벡터 개념을 연습하려면 연습 문제 4개를 더 잠금 해제해요