자동으로 메모리가 할당되는 배열. (stack과 비슷)
#include <vector>
using namespace std;
vector<[data type]> [variable name]
vector v;
비어있는 vector v를 생성.
vector v(n);
default value(0)로 초기화된 n개의 원소를 가지는 vector v를 생성.
vector v(n, k);
k 값으로 초기화된 n개의 원소를 가지는 vector v를 생성.
vector v2(v);
vector v를 복사해서 vector v2를 생성.
v.assign(n, k);
k 값으로 n개의 원소 할당.
v.at(idx);
idx번째 원소 참조.
v[idx] 보다 속도는 느리지만, 범위를 점검하므로 안전.
v[idx];
idx번째 원소 참조. v.at(idx)보다 속도 빠름.
v.front();
첫번째 원소 참조.
v.back();
마지막 원소 참조.
v.begin();
첫번째 원소를 가리킴. (iterator와 사용)
v.end();
마지막의 다음 원소를 가리킴 (iterator와 사용)
v.rbegin();
reverse begin을 가리킴 (iterator와 사용)
v.rend();
reverse end 을 가리킨다 (iterator와 사용)
v.reserve(n);
n개의 원소를 저장할 위치 동적할당
v.resize(n);
크기를 n으로 변경. 커지는 경우, default value(0)로 초기화.
v.resize(n,k);
크기를 n으로 변경. 커지는 경우, k 값으로 초기화.
v2.swap(v);
v와 v2의 capacity를 스왑.
(v의 capacity 할당 메모리 해제시 사용하기도 함. vector().swap(v);)
v.insert(i, n, k);
i번째 위치에 n개의 k 값을 삽입. (원래 있던 값은 뒤로 밀림)
v.insert(i, k);
i번째 위치에 k 값을 삽입. (삽입 위치의 iterator를 반환함)
v.clear();
모든 원소 제거. size만 줄어들고, capacity는 남음.
v.push_back(k);
마지막 원소 뒤에 k 값 삽입.
v.pop_back();
마지막 원소 제거.
v.erase(iter);
v.erase(iter); : iter가 가리키는 원소 제거.
v.erase(start, end); : [start, end) 원소 제거.
size만 줄어들고 capacity는 남음.
v.empty()
vector가 비었으면(size가 0이면) return true
v.size();
return 원소의 개수.
v.capacity();
return 할당된 메모리 크기.
sort(v.begin(), v.end()); // 벡터 정렬.
// unique : 중복되는 값 뒤로 보냄. return 뒤로 옮긴 값들의 첫 위치.
// 쓰레기값 첫 위치부터 벡터 마지막 위치까지 erase.
v.erase(unique(v.begin(), v.end()), v.end());
// find : 범위 내 일치하는 첫 번째 원소를 가리키는 반복자 리턴.
// 일치하는 원소를 찾지 못한 경우 end 리턴.
auto iter = find(v.begin(), v.end(), num);
if (iter != v.end()) {
cout << iter - v.begin() << "위치에" << num << "존재";
}
#include <algorithm>
min({ a, b, c , ... }); // 최소값 리턴.
max({ a, b, c , ... }); // 최대값 리턴.
#include <cmath>
ceil(x); // 올림.
round(x); // 반올림.
floor(x); // 내림.
trunc(x); // 버림.
// x c r f t
// 1.4 2 1 1 1
// 1.5 2 2 1 1
// -1.4 -1 -1 -2 -1
// -1.5 -1 -2 -2 -1
// n 번째 자리수에서 올림,반올림,내림 하려면?
// 다음과 같이 쓰면 됨.
ceil( x * (10*n) ) / (10*n);