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;
}
아래 링크 설명이 좋아 직접 타이핑하면서 외우는중
출처
'개발 > 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 |