Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- DataProcessing
- 도커로 깃블로그 만들기
- mlflow
- 오토트레이딩
- ML
- YOLO
- 불법마약특별단속 #부산지방경찰청
- DLInear
- 흥미붙이기
- pandas
- 프레딧
- 강화학습으로주식하기
- AI
- 프로바이오틱스
- 벨만방정식
- LTSF
- RL
- DL
- socket.io
- express
- de
- TimeSeries
- node.js
- transformer
- 제발쉽게좀가르치자
- HY7714
- MPRO
- 강화학습
- NLinear
- 엠프로
Archives
- Today
- Total
상황파악
C++ - Vector 벡터란? 본문
C++에서 사용하는 가변 배열, 생성 시 heap에 동적할당
장점 : 편함
단점 : 삽입시 메모리 재할당으로 부하 발생
구조
front() | 첫번째 원소 |
back() | 마지막 원소 |
begin() | 첫번째 위치 |
end() | 마지막의 다음 위치 |
size() | 원소의 개수 |
capacity() | 할당된 공간의 크기 |
capacity가 있는 이유?
추가 공간이 필요할때 마다 하나씩 늘리는 것은 비효율적
capacity/2 만큼 공간을 늘려서 반복작업의 수를 감소시킴
초기화 방법
#include <vector>
vector<int> v; // int 타입 벡터 생성
vector<int> v = {1,2,3}; // 벡터 생성 후 값 1,2,3 초기화
vector<int> v[100]; // 크기 100의 벡터 배열 생성
vector<int> v[] = {{1,2},{3,4}}; // 2차원 벡터 생성 (행은 가변 열은 고정)
vector<vector<int>> v; // 2차원 벡터 생성 (행,열 모두 가변)
vector<int> v(10); // 10개 원소 0으로 초기화
vector<int> v(10,1); // 10개 원소 1로 초기화
vector<int> v2(V); // v2 생성 및 복사
기본틀 : vector <[data type]> [변수이름]
사용방법
// 값 할당
v.assign(5,2); // 값을 2로 5개 원소 할당
v.reserve(n); // n개의 원소를 저장할 위치를 예약 (미리 동적할당 받기)
v.resize(n); // 크기를 n으로 변경, 더 커졌을 경우 0으로 초기화
v.resize(n,m); // 크기를 n으로 변경, 더 커졌을 경우 m으로 초기화
v.insert(2,3); // 2번째 위치에 3을 삽입, 삽입한 곳의 iterator 반환
// 참조
v.front(); // 첫번째 원소 참조
v.begin(); // 첫번째 원소를 가리킴, iterator 사용
v.at(index); // index번째 원소 참조 v[index]보다 느리지만 범위를 점검하므로 안전
v.back(); // 마지막 원소 참조
v.push_back(10); // 마지막에 10 추가
v.end(); // 마지막 다음 가리킴, iterator 사용
v.rbegin(); // 거꾸로 해서 첫번째 원소 가리킴, iterator 사용
v.rend(); // 거꾸로 해서 마지막의 다음을 가리킴, iterator 사용
// 값 제거
v.pop_back(); // 마지막에 넣은 값 제거
v.erase(iterator); // iterator가 가리키는 원소 제거, size만 감소
v.erase(vec.begin(), vec.begin()+5); // index 0~5 제거 (범위지정)
v.clear(); // 벡터 비우기, 메모리는 남아있음, size만 줄어듬
v.empty(); // size가 0이면 (vector가 비었으면) true반환
// 그 외
v.size(); // 원소 개수
v.capacity(); // 할당된 공간 크기
v2.swap(v1); // v1이랑 v2 원소와 capacity 변경
반복문으로 값 확인 방법
for (int i = 0; i < v.size(); i++) // int 대신 auto를 사용해도 좋다
cout << v[i] << " ";
Iterator 활용 값 확인 방법
for (auto i = v1.begin(); i != v1.end(); ++i)
cout << *i << " ";
'C++' 카테고리의 다른 글
C++ 최대값 최소값 (0) | 2021.01.12 |
---|---|
C++ 자리수 출력 (0) | 2021.01.11 |
C++ vector 정렬 sort (0) | 2021.01.11 |
C++ vector 요소 합 acculmulate (0) | 2021.01.11 |