Language/C++
-
[C++ STL] Sort() 사용법 및 compare 함수Language/C++ 2020. 1. 31. 16:48
sort 함수는 C++ STL에서 제공하는 함수로써 정렬에 이용되며 헤더를 include 하여 사용 할 수 있다. 각종 알고리즘 문제에서도 간단하게 사용 할 수 있어서 자주 쓰이는데, 이 함수의 시간 복잡도는 nlogn이다. 시간 복잡도에 대해 조금 더 설명해보면, sort 함수의 구현은 intro sort라는 정렬 방법을 바탕으로 했는데, 이 방법은 quick sort에 heap sort와 insertion sort를 섞은 방식으로 평균 nlogn, 최악의 경우 n^2의 시간 복잡도를 가지는 quick sort와는 달리, 최악의 경우에도 nlogn을 보장한다. 함수의 인자와 사용법을 살펴보면 1 2 3 vector v(10,10); sort(v.begin(),v.end()); // 1 sort(v.be..
-
cout, cin 최적화 방법과 주의점Language/C++ 2020. 1. 30. 17:43
cout과 cin의 속도를 빠르게 하기 위해서는 1 2 3 ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 이 구문을 추가해주면 된다. 하지만 이 구문이 단순히 최적화해주는 구문이라고 생각하고 사용하면 안된다. 그 이유들을 설명하면 1 ios::sync_with_stdio(false); 이 구문은 c와 c++ 입출력의 synchronization을 false로 바꿔준다. 일반적으로 c++ 컴파일러는 c와 c++ 스타일의 입출력을 혼용하는 것을 허용하는데, 이를 구현하기 위해서 모든 표준 입출력들 또한 동기화 되어있다. 그러한 동기화를 꺼줌으로써 c++ 입출력시 독립된 자신만의 버퍼를 사용하게 된다. 이로 인해, 위 구문을 적용하고 cout, ci..
-
[C++ STL] 2차원 vector 선언 및 사용법Language/C++ 2020. 1. 29. 16:30
※ 이 포스팅은 기본적으로 vector에 대한 개념을 알고 있다는 전제하에 작성. 우선 2차원 vector의 선언에 앞서 일반적인 vector 선언을 살펴보면, 1 2 vector v; v.pushback(7); 위와 같은 형식으로 특정한 자료형을 동적으로 담을 수 있는 구조로 이루어져있다. 2차원 vector의 선언은 일반적인 vector의 형식과 동일하게 vector 안에 vector 자료형을 담는다는 느낌으로 1 vector v; 위와 같은 형태로 선언을 할 수 있다. 그럼 이렇게 선언된 2차원 vector를 어떻게 사용하냐? 1 v.pushback(??????); 물음표 부분에 무엇을 넣어야 하는지가 헷갈릴텐데, 앞서 int형을 담는 vector에 int형을 넣어줬던 것과 동일하게, vector ..