일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- git
- 스프링프레임워크
- 카카오인코더
- 연결리스트
- 스프링 프레임워크
- spring
- retrofit
- stl
- Rebase
- Map
- 안드로이드
- 프로그래밍
- DP
- 스프링
- 머신러닝
- 프로그래머스
- hackerrank
- python3
- Android
- ADAS
- 백준
- c++
- c
- BFS
- 블로그개설
- 인코더
- vue.js
- TensorFlow
- 백트래킹
- Kotlin
Archives
- Today
- Total
이것저것 공부한 기록
C++) 자주 쓰는 Vector 정리 본문
거의 push랑 참조밖에 안 쓰는거 같긴 한데...
메모리가 연속하게 저장되기 때문에, []나 at으로 읽는 속도는 빠르다
또한 다른 표준 컨테이너들과 비교할 때, 컨테이너의 끝에 새로운 원소를 삽입/삭제하는 시간이 효율적이다.
그러나 때문에 끝이 아닌 중간에 삽입하는 작업은 느리게 동작한다.
원소를 추가해서 size의 크기가 capacity를 넘어가버리면 내부적으로 추가적인 공간을 할당한다.
추가적으로 할당되는 공간은 거의 현재 벡터의 capacity만큼 할당된다
-> 즉, 전체 할당 크기가 이전의 두배가 됨.
벡터의 capacity를 확장하는 것 = 메모리를 새로 할당, 벡터의 내용을 복사
이기 때문에 꽤 시간이 걸림.
많은 원소를 추가해야 하는 경우 vector::reserve를 사용하여 capacity를 미리 크게 할당해 두는 것이 좋다.
멤버함수
v.at(i) | v의 i번째 원소를 참조 |
v.front() | v의 첫번째 원소를 참조 |
v.back() | v의 마지막 원소를 참조 |
v.begin() | v의 처음 |
v.end() | v의 끝 |
v.push_back(x) | v의 끝에 x를 추가 |
v.pop_back() | v의 마지막 원소를 제거 |
v.size() | v의 원소 개수 |
연산자
v1 == v2 | v1과 v2의 모든 원소가 같은가? |
v1 != v2 | v1과 v2의 원소가 하나라도 다른가? |
v1 < v2 | 문자열 비교처럼 동작함 |
v1 > v2 | 문자열 비교처럼 동작함 |
v[i] | i번째 원소 참조 |
'Study > 프로그래밍 개념정리' 카테고리의 다른 글
C/C++) nth_element (header algorithm) (0) | 2019.11.16 |
---|---|
C++) Set, Map 정리 (0) | 2019.10.26 |
C/C++) 문자 종류 판별 정리 (0) | 2019.10.26 |
C++) 입출력 정리 (0) | 2019.10.17 |
C++) Const (상수) Pointer 정리 (0) | 2019.09.23 |