기타/C++ 문법18 <max_element(), min_element()> 여러값 중 최댓값, 최솟값 구하기 max_element(), min_element() 함수가 존재한다. 주의할 점은, 이 함수는 값 자체를 리턴하지 않고 그 값의 주소를 리턴한다. max_element(), min_element() 함수에 이터레이터를 매개변수로 넘겨야 하므로 begin(), end() 함수를 써준다. 처음부터 끝까지 찾을 필요가 없을 때는 max_element(v.begin()+1, v.begin()+4) 이런식으로 사용해도 된다. 위의 식은 v[1]부터 v[3]까지 중 최대값을 찾아준다. 아래의 예를 보고 적용시켜보자! #include #include #include using namespace std; int main() { int size, val; vector v = { 4,2,1,2,1 }; cout 기타/C++ 문법 2022. 5. 18. <lower_bound, upper_bound> 정렬된 공간에서 이진 탐색 C++ 에서 이진탐색으로 원소를 탐색하는 함수가 제공된다는 것을 이번에 처음 알았다. , 가 있다. 해당 함수를 사용할 때는 배열 혹은 벡터는 오름차순으로 정렬 되어야한다. 이진탐색은 그런 조건일 때 사용되는 알고리즘이기 때문이다. - 이 함수를 쓰기 위한 용도로는 찾고자하는 값이 인덱스 몇번에 위치하는지 알고 싶을 때 사용하면 된다. 이 함수의 반환형은 Iterator 이므로 첫 번째 주소를 가리키는 v.begin()을 빼줘야 한다. 이렇게 구현을 해준다면 인덱스 번호가 반환이 된다. - 찾으려는 값을 초과하는 숫자는 몇번째 인덱스에서 처음 등장하는지 알고 싶을 때 사용하면 된다. 두개의 함수 모두 벡터나 배열의 시작 지점과 끝지점 그리고 찾고자하는 원소값을 인자로 둔다. 아래의 코드를 보고 어떻게 사.. 기타/C++ 문법 2022. 1. 21. <unordered_map> 자료구조 을 선언해야한다. 주의해야 할 점은, key가 유사한 데이터가 많을 시 해시 충돌로 인해 성능이 떨어질 수도 있다. 그렇기 때문에 key 값이 다르면서 해당 key값을 갖는 원소의 갯수를 탐색 할 때 사용하면 빠른 시간내에 찾을 수 있다. find(key) : 맵에서 해당하는 key값을 갖는 원소가 있는지 확인한다. operator [] : key를 통해 value 를 지정한다. 코드를 확인해보면 어떻게 쓰이는지 안다. size() : 맵의 크기를 확인한다. empty() : 맵이 비어있는지 확인한다. insert({key,value}) : key값과 value값을 한번에 삽입한다. erase(key) : key 해당하는 원소를 제거한다. celar() : 맵 초기화 참고로 인덱스로 접근할 수 없고 it.. 기타/C++ 문법 2022. 1. 21. <erase> 문자열 지우기 문자열에서 어떠한 특정 인덱스에 위치한 하나의 값만 지우고 싶을 때나 여러개의 문자를 지울 때 쓰인다. s.begin() + 3 : 문자열 s의 인덱스 3번 s.erase(s.begin() + 3, s.begin()+4) : 문자열 s의 인덱스 3번부터 인덱스 4번 전까지 지우기 #include #include using namespace std; int main() { string s = "123456"; s.erase(s.begin() + 3, s.begin()+4); cout 기타/C++ 문법 2022. 1. 20. <erase/insert> 삭제 및 삽입 벡터의 원소를 삭제를 하면 이후 인덱스에 해당하는 값이 지운 인덱스 칸을 채울 수 있다. 또한 어떤 특정 인덱스에 특정값을 삽입 하면 기존에 있던 값들은 뒤에 위치하게 된다. 다음 문법을 확인하고 숙지하자. 추가적으로, erase(int start, int end) 하나가 아닌 여러개를 지울 때는 해당하는 범위의 원소를 지운다. start는 포함하고, end는 포함하지 않는다는 것에 주의하자 v.erase(v.begin()+2, v.begin()+4)는 세 번째부터 네 번째 까지의 원소를 지운다. #include #include using namespace std; int main() { vector v(3); for (int i = 0; i < 3; i++) { v[i] = i; } for (int i.. 기타/C++ 문법 2022. 1. 20. <vector> 반환값 size() - 벡터의 요소의 개수를 반환. swap(vector객체) - 두 벡터의 내용을 교환(교체). empty() - 벡터가 비었는지 여부를 반환. at(index) - index번째 요소에 접근. begin() - 벡터의 첫 번째 요소를 가리킴. (포인터개념) end() - 벡터의 마지막 요소를 가리킴. (포인터개념) front() - 벡터의 첫 번째 요소를 반환. back() - 벡터의 마지막 요소를 반환. 기타/C++ 문법 2022. 1. 20. <resize> 벡터 초기화 벡터의 사이즈를 정하면서 어떠한 값으로 초기화 시켜줄 때 쓰는 함수다 1차원 뿐만 아니라 2차원 또한 초기화가 되므로, 코딩테스트에서 벡터를 사용할 필요가 있을 때는 1차원 또는 2차원 벡터까지만 사용하는 문제가 99.99999퍼센트이기 때문에 다음 함수를 잘 활용해보자. #include #include using namespace std; int main() { vector v; v.resize(10, 2); cout 기타/C++ 문법 2022. 1. 19. <reverse> 문자열 역정렬 말 그대로 문자열을 거꾸로 뒤집어 정렬 하는 것이다. reverse(s.begin(), s.end()) ; 알아두자 #include #include using namespace std; int main() { string s = "abcde"; reverse(s.begin(), s.end()); cout 기타/C++ 문법 2022. 1. 17. <set> 자료구조 중복제거를 하기위해 쓰이는 자료구조이다. 많이 쓰이는 자료구조는 아니지만 문제에서 모든값의 중복을 없애고 오름차순으로 정렬하라는 문제가 나온다면 사용할 수 있다. 헤더로 set을 갖고 set 변수명 ; 으로 생성 할 수 있다. set는 균형 잡힌 이진트리로 자동으로 오름차순으로 정렬이 된다. 만약 set s 라는 set을 생성하고 값을 집어 넣을 때는 s.insert(값) 을 넣어주면 된다. 삭제를 할 때는 s.erase(값)을 해준다. 다음 코드를 보고 문법과 쓰임을 알아두자 #include #include #include using namespace std; int main() { vector a = { 1,2,1,2,3,1,2,3 }; set s; for (int i = 0; i < a.size().. 기타/C++ 문법 2022. 1. 14. <priority_queue> 자료구조 Priority_Queue는 Queue 의 한 종류인데 말 그대로 우선순위에 따라 정렬된 Queue라고 보면 도니다. 와 동일한 라이브러리에서 지원 해주며 특정 원소를 push 를 할 때 O(logN)만에 이루어진다. 해당 시간 복잡도가 이해가 안간다면 자료구조 [힙] 이라는 것을 search 해보길 바란다. Priority_Queue 는 힙 구조로 되어있다. priority_queue 변수명 : 생성 priority_queuen2; } }; int main() { priority_queue q; q.push(1); q.push(3); q.push(2); for (int i = 0; i < 3; i++) { cout 기타/C++ 문법 2022. 1. 14. 이전 1 2 다음 반응형