C++ STL
-
[C++ STL] 소수 관련 함수들C++ STL 2025. 10. 20. 21:53
[소수 지원 자료형] 1. float = 4Byte = 32bit정밀도 6-7자리소수점 6자리 이상부터는 반올림 오차가 생길 수 있다. 2. double = 8byte = 64bit정밀도 15-16자리소수점 15자리 이상부터는 반올림 오차가 생길 수 있다. 참고로 c++의 cout는 출력 시 보기 좋게 하기 위해 기본적으로 precision이 6자리로 설정되어있다.따라서 double 값이 아무리 15자리까지 정확해도 default 설정에 따라 6자리 유효숫자만 표현한다. double의 경우 15자리까지만 정확하기 때문에 precision을 15-16정도까지만 해줘야한다. float과 double의 차이는 실수값을 저장하기 위해 사용하는 메모리 bit 사이즈에 있다. float 형은 실수값을 저장하기 위..
-
[C++ STL] set vs unordered_setC++ STL 2024. 8. 23. 14:35
[set과 unordered_set의 가장 큰 차이점은 정렬 유무!] 둘다 집합이므로 중복허용은 안하는데set은 이진트리로 구현되어있어 정렬을 해준다그래서 custom comp 구조체를 따로 정의해서 사용가능하다 set은 노드기반 이진트리로 구성되어있으므로삽입 삭제 조회가 모두 O(logN) 이다 [그럼 unordered_set 왜 쓰는데?] 근데 unordered_set은 말그대로 정렬되지 않은 set즉 중복허용도 안해주고정렬도 안해준다 unordered_set을 사용하는 이유는insert, erase, find가 모두 O(1)이기 때문이다왜냐하면 해시테이블로 구현되어있기 때문이다
-
[C++ STL] custom comp 구조체C++ STL 2024. 8. 21. 18:15
[어떤 STL을 사용하는지에 따라 return true의 의미가 다르고 구조체/함수 구현해야하는게 다르다] 1. priority_queuestruct pq_comp{ bool operator()(pair& obj1, pair& obj2) { return obj1.second , vector>, pq_comp> pq; struct comp 구조체 사용 + 내부에 bool operator( ) 정의return true인게 우선순위가 더 낮음 2. setstruct comp 구조체 + 내부에 bool operator( ) 정의 return true인게 우선순위가 더 높음 3. sort (vector에 사용 시)bool custom_sort(pair a, pair b) { // first..
-
[C++ STL] bitsetC++ STL 2023. 7. 7. 19:54
생각보다 매우 많이쓴다보조 stl로 굉장히 많이 씀 비트마스크 풀때 그냥 비트연산보다 얘로 푸는게 훨씬 빠를때도 있음 1. DFS/백트래킹이나 BFS 풀때 visited 배열을 방문처리하기 위한 목적으로 함수호출 시 인자로 넘기는 경우가 많은데 이때 bitset type으로 넘기면 편하다. 공간복잡도도 줄어들고 가장 꿀인거는 다 방문했는지 확인하는 함수를 별도로 작성하지 않고visited.count() 를 사용해서 한번에 함수를 통해 확인할 수 있기 때문이다. 2. 이진법 문제에 bitset을 쓰면 편하다(수학 문제에서) bitset은 이진법으로 구현되어 있고이진법으로 바꿀 수를 bitset의 생성자에 넣음으로써 한번에 이진수를 알아 낼 수 있기 때문이다.// 0100011bitset b(35);// 0..
-
[C++ STL] unordered_mapC++ STL 2023. 3. 31. 00:05
1. 말 그대로 정렬되지 않은 map 임2. hashtable 사용. 해시함수로 원소 찾음3. map의 특성을 그대로 가지고 가지만 정렬만 안되어있을 뿐임 4. 중복 허용X 5. 일반 map보다 탐색속도가 빠름map O(logN)unordered_map O(1) 보통 이럴때쓴다 1. 데이터를 받아야하는데 정렬이 필요없이 pair 객체로 받아야할때// key값 int value도 intunordered_map um; 2. 특정 key값의 원소들을 vector에 다 같이 저장하고 싶을때 // key값 int// value값 int 저장하는 vectorunordered_map> group;// key값 int // value값 pair객체를 저장하는 vectorunordered_map>> group; [un..
-
[C++ STL] sstreamC++ STL 2023. 3. 7. 22:01
문자열을 한 줄에 받을때 쓰는 기법 stringstream은 일련의 문자를 포함하는 문자열 버퍼를 사용한다 stringstream은 여러가지 자료형이 한 줄로 들어올때 문자열을 파싱해야할때 매우 유용한 라이브러리이다 문자열에서 내가 원하는 자료형을 추출해야할때 쓰면 된다 이 stringstream은 공백과 '\n'문자를 제외하고 문자열에 맞는 자료형을 빼낸다 [ 추출할 type설정하기 ] data가 어떤 타입인지에 따라 추출되는게 달라진다 int data로 선언했으면 문자열에서 숫자만 파싱되고 ( 0-9 ) char data로 선언했으면 문자열에서 문자만 파싱되고 ( 숫자도 파싱됨 문자인 숫자로 취급되서 ) string data로 선언했으면 문자열에서 문자열이 파싱된다! ( 이땐 공백으로 구분되어 파싱됨..