
vector 선언
vector<int> v;
vector<int> v(10);
vector<int> v(10, 1);
vector<int> v = {1, 2, 3};
vector< vector<int> > v;
vector< vector<int> > v(10, vector<int>(20, 1) );
함수 인자
void func(vector<int> v) {
v.push_back(30);
}
int main() {
vector<int> v;
func(v);
}
void func(vector<int> &v) {
v.push_back(30);
}
int main() {
vector<int> v;
func(v);
}
각종 함수
vector<int> v;
v.push_back(10);
v.push_back(20);
v.insert(v.begin() + 1, 500);
v.pop_back();
v.emplace_back(v.begin() + 1, -900);
v.erase(v.begin() + 1);
find
#include <algorithm>
vector<int> v;
if (find(v.begin(), v.end(), 0) != v.end() ) {
printf("0이 있다\n");
}
int arr[]= {10, 20, 30, 40, 50};
if (find(arr, arr + 5, 30) != arr + 5) {
printf("30이 있다\n");
}
resize
- 전역변수로 먼저 선언하고, main 안에서 N 받으면 그 때 크기 지정해주는 게 가능하다
vector< vector<int> > graph;
vector<bool> visited;
int main() {
int N;
scanf("%d", &N);
graph.resize(N+1);
visited = vector<bool>(N+1, false)
}
sorting
- graph 탐색 등에서 push back한 순서가 아닌, 크기가 작은 순서대로 탐색해야 하는 경우 유용하다
- 우선순위 큐를 써야 하나 고민했다
vector< vector<int> > graph;
int main() {
int N;
cin >> N;
graph.resize(N+1);
for (int i = 1; i <= N; i++) {
sort(graph[i].begin(), graph[i].end());
}
}