Algorithm | 동적 배열 std::vector

·2024년 11월 1일
0
post-thumbnail

📝 Programmers School
[C++] 어서와! 자료구조와 알고리즘은 처음이지?



동적 배열

동적 메모리 할당 : 프로그램 실행 중 필요한 크기의 메모리 공간을 할당해 사용하는 기법
→ 동적으로 할당한 메모리는 사용이 끝나면 명시적으로 할당된 메모리를 해제해야 함

  • malloc(), calloc / free() - 함수
  • new / delete - 연산자

std::vector

C++에서 C스타일 배열을 대체하는 가변 크기 컨테이너

std::vector<type> vec;


// 이차원 벡터 배열
std::vector<std::vector<Type>> vecArr { { --- }, {---} };
  • 초기화 과정에서 데이터 크기를 지정하지 않아도 됨
  • 배열 크기 확장 가능
  • <vector> 에 정의

std::vector의 사용

vector 주요 멤버 함수


push_back()

기존에 할당된 배열에 push_back() 함수로 새로운 값이 할당되면,
기존 동적할당된 메모리 공간에는 더이상 새로운 값을 추가할 수 없다.

vector는 기존 할당된 공간의 2배 만큼의 공간을 새로 할당하여
기존에 들어있던 값을 복사하고 새로운 값을 추가한다.

vec = {1, 2, 3, 4};
// capacity 4 : size 4

vec.push_back(5);
// capacity 8 : size 5

insert(), erase()

vec.insert(삽입위치, 삽입할 값);
// → 삽입 위치 이후의 값들은 전부 오른쪽으로 한칸씩 밀림

vec.erase(삭제 시작 위치, 삭제 종료 위치)
// → 종료 위치 직전 위치까지 삭제 후, 이후의 값들을 삭제된 위치까지 왼쪽으로 가져옴
// 원래 메모리에 할당되어 있던 값은 삭제되지 않고 그대로 유지되나, 배열 범위는 줄어듦
vec = {0, 1, 2, 3, 4, 5, 6};
vec.erase (vec.begin() + 1, vec.begin() + 3);

// {0, 3, 4, 5, 6}, 5, 6
profile
🌦️ @xaesu

0개의 댓글