본문 바로가기
개념공부/C, C++, IDE

[C++] vector container

by Zach Choi 2023. 1. 6.
728x90
반응형

주 언어가 C 다 보니, 코드 문제 풀이 사이트에서 자료구조가 필요할때 마다 직접 짜넣는게 매우 귀찮았다. C++이나 Python의 경우 기본적으로 자료구조가 구현되어 있다보니 부러운적이 많았다. (연산 시간 면에서는 C로 그냥 짜는게 훨 낫지만 말이다.) 

 

본격 C++을 써야할 일이 생겨서, 공부하는 중에 Vector Container를 보고 무릎을 탁 쳤다. 진짜 편해서.. 오늘은 Vector Container에 대해 정리해보자.

 

1) vector Container

  • 배열 + Stack 자료 구조가 합쳐진 역할을 수행한다.
  • v.front(), v.back(), v.begin() 등 다양한 멤버함수가 존재한다.

 

2) vector 사용

  • <vetor> 헤더 파일을 추가해야 함
  • 선언 방식 vector<data type> 변수 이름
    •  ex) vector<int> a;

3) vector의 생성자와 연산자

  • vector<int> a;
    • 원소가 없는 vector a를 생성한다.
  • vector<int> a(5);
    • 5개의 원소를 가지고 기본값 (0)으로 초기화된 vector a를 생성한다.
  • vector<int> a(5,2);
    • 5개의 원소를 가지고 2로 초기화된 vector a를 생성한다.
  • vector<int> a2(a1);    vector<int> a1(5,2)
    • a2는 vector a1을 복사하여 생성된다.
  • vector<int> a1, vector<int>a2가 있고 내부에 인자들이 있는 경우,
    • 연산자 "==", "!=", "<", ">", "<=", ">="로 대소 비교가 가능하다.

 

4) vector<int> a의 멤버 함수

  • a.assign(n, m);
    • n개의 원소를 m으로 할당
  • a.at(idx);
    • idx번째 원소를 참조함
    •  a[idx]보다 속도는 느림, 컨테이너 크기를 점검해서 out of bound error에서 안전함
  • a.front();
    • 첫번째 원소를 참조함
  • a.back();
    • 마지막 원소를 참조함
  • a.clear();
    • 모든 원소를 제거함
    • 원소만 제거하고 메모리는 남아 있음
  • a.push_back(m);
    • 마지막 원소 뒤에 m를 삽입함
  • a.pop_back();
    • 마지막 원소를 제거함
  • a.begin();
    • 첫번째 원소를 가리킴
  • a.end();
    • 마지막 원소의 다음을 가리킴(?)
  • a.rbegin();
    • 컨테이너 원소를  reverse한 후 첫번째 원소를 가리킴
  • a.rend();
    • 컨테이너 원소를 reverse한 후 마지막 원소의 다음을 가리킴(?)
  • a.resize(n);
    • 컨테이너의 크기를 n 으로 변경합니다.
    • 확장된 메모리 영역에 대해서는 0으로 초기화 합니다.
  • a.resize(n, m);
    • 컨테이너의 크기를 n으로 변경합니다.
    • 확장된 메모리 영역은 m으로 초기화 합니다.
  • a.size();
    • 원소의 갯수를 반환함
  • a.capacity();
    • 할당된 메모리의 크기를 반환함
  • a.insert(n, m, k);
    • n번째 위치에 m개 원소를 삽입하고 k로 초기화 합니다. 뒷 인덱스 요소는 m만큼 밀립니다.
  • a.insert(n, m);
    • n번째 위치에 m 값을 삽입함
  • a.erase(index);
    • index가 가리키는 원소를 제거한다.
    • size만 줄어들고 capacity는 그대로 남는다.
  • a.empty();
    • vector a 가 비어있으면 true를 리턴함
    • 비어있다 -> size = 0, capacity와는 무관

5) Size와 Capacity

Size : 컨테이너에 있는 요소의 개수

Capacity : 할당된 메모리의 개수

  • 컨테이너에 요소를 1개 추가할때마다 Size는 1씩 증가함
  • 컨테이너에 요소를 1개 추가할때마다 Capacity는 2배로 증가함 
    • 1 -> 2 -> 4 -> 4 -> 8 -> 8 ....

참고 : https://blockdmask.tistory.com/70

728x90
반응형