본문 바로가기
개발/C++

C++ 자료구조 - Vector

by devsu 2020. 6. 19.

Vector

- 배열인데, 동적으로 크기를 확장 또는 축소가 가능하게 되어있는 자료구조(크기조절 시 오버헤드 큼)

- 역시 배열의 특징을 그대로 가져온다. 데이터의 위치를 알고 있으면 랜덤 엑세스가 가능하다.

- 하지만 중간에 데이터를 삽입 또는 제거하려면 땡기거나 밀어야 되는 단점도 그대로 가지고 온다.

- 하지만 끝부분에 삽입할 땐 빠름

1. 사용

- #include<vector>

- vector<[data type]> [변수이름]

 

2. 생성자와 연산자(int로)

 - vector<int> v;

   - 비어있는 vector v를 생성

 

 - vector<int> v(5);

   - 0으로 초기화 된 5개의 원소를 가지는 vector v를 생성

 

 - vector<int> v(5,2);

   - 2으로 초기화 된 5개의 원소를 가지는 vector v를 생성

 

3. 멤버 함수

- v.assign(5,2);

   - 2의 값으로 5개의 원소 할당

- v.at(idx);

   - idx번째 원소를 참조.

   - v[idx] 보다 속도는 느리지만, 범위를 점검하므로 안전

 

- v[idx];

   - idx번째 원소를 참조.

   - v[idx] 보다 속도는 빠르지만, 범위를 점검하지 않음

 

- v.front();

   - 첫번째 원소를 참조.

 

- v.back();

   - 마지막 원소를 참조.

 

- v.clear();

   - 모든 원소 제거

   - 원소만 제거하고 메모리는 남아있음.

 

- v.push_back(7);

   - 마지막 원소 뒤에 원소 7을 삽입

 

- v.pop_back();

   - 마지막 원소를 제거.

 

- v.begin();

  - 첫번째 원소를 가리킴(iterator 반환)

 

- v.end();

  - 마지막 원소를 가리킴(iterator 반환)

 

- v.rbegin();

  - reverse 첫번째 원소를 가리킴(iterator 반환)

 

- v.rend();

  - reverse 마지막 원소를 가리킴(iterator 반환)

 

- v.reserve(n);

  - 미리 n개의 원소로 동적할당

 

- v.size();

   - 원소의 갯수를 리턴

 

- v.capacity();

  - 할당된 공간의 크기를 리턴한다.

  - 크기가 증가될 때 기존 메모리*2로 증가

  - 원소 개수가 3개여도 capacity는 4(2*2)

 

- v2.swap(v1)

  - v1과 v2의 원소와 capacity 바꿔줌

 

- v.insert(2,3);

  - 2번째 위치에 3의 값을 삽입

 

- v.insert(2, 3, 4);

  - 2번째 위치에 3개의 4값을 삽입

 

- v.erase(iter);

  - iter가 가리키는 원소를 제거

 

4. 유용한 함수

- min_element(iter.begin(), iter.end());

  - 최소값

- max_element(iter.begin(), iter.end());

  - 최대값

#include <iostream>
#include <vector>
#include <algorithm> 
using namespace std;

int main()
{
	vector<int> vec = { 3, 4, 2, 6, 8, 10 };
	int min = *min_element(vec.begin(), vec.end());
	int max = *max_element(vec.begin(), vec.end());
	cout << "min : " << min << endl;
	cout << "max : " << max << endl;
}

 

아래 링크 설명이 좋아 직접 타이핑하면서 외우는중

출처

https://blockdmask.tistory.com/70

'개발 > C++' 카테고리의 다른 글

C++ 자료구조 - Deque  (0) 2020.06.21
C++ 자료구조 - Set  (0) 2020.06.21
C++ 자료구조 - Map  (0) 2020.06.21
C++ 자료구조 - List  (0) 2020.06.19
C++ 자료구조 정리  (1) 2020.06.19