언어 4

[C++] set, multiset 간단 사용법

선언 set은 중복을 없애고 입력할 때 정렬이 되어서 입력되는게 특징이다. multiset은 중복을 허용하는것만 다르고 나머지는 set과 같다. set도 마찬가지로 정렬 기준을 바꿀 때는 priority queue와 마찬가지로 구조체를 선언하거나 stl에서 지원하는 것을 사용하면됩니다. 이것에 대한 설명은 https://hagisilecoding.tistory.com/60 여기에서 구조체 구현 부분을 보시 면 자세히 나와있습니다. #include set s1 // 중복없애고 정렬(default : 오름차순) multiset s2 // 중복허용 정렬(default : 오름차순) set s3 // 내림차순 정렬 set s4(s2); // 선언 후 복사한 값으로 초기화 set s4 = s2 // 선언 후 복사..

언어/C++ 2022.04.05

c++ 우선순위 큐 priority_queue 사용법 [컴공과고씨]

우선순위 큐는 힙을 이용하여 루트에 우선순위에 따라 최대값 혹은 최소값이 있는 것을 말한다. 선언 struct cmp{ bool operator()(int a, int b){ return a>b; } } #include priority_queue q1; // 루트가 최대인 우선순위 큐 선언 priority_queue; // 루트가 최소값인 우선순위 큐 선언 priority_queue;// 루트가 최소값인 우선순위 큐 선언 자신이 직접 우선순위를 정할 때는 구조체를 생성해주어야한다. 주의 할 것은 벡터는 위와 같이 비교연산을 하면 내림차순으로 정렬된다. 하지만 우선순위 큐는 a가 루트에 있는 값이기 때문에 a가 더 크면 true를 반환한다. 반환값이 true이면 swap를 하겠다는 의미이기 때문에 a와 b..

언어/C++ 2022.04.04

C++ 비트 마스킹 (비트 연산) [컴공과고씨]

데이터 타입에는 각 메모리 사용 크기가 있다. 만약 int 라고 하면 4byte 즉, 32 bit의 크기를 가진다. 표현하면 0000 0000 0000 0000 0000 0000 0000 0000이 될 것이다. (0과 1을 씀) 만약 아이템이 있고 없고를 구현해야할 때 bool 변수 32개를 쓰는 대신에 하나의 비트를 다룰 수있으면 우리는 int하나로 32개의 아이템이 있고 없고를 표현할 수 있다. 또한 비트 연산은 연산 속도가 빠르다는 장점을 가지고 있다. 만약 2번째 아이템이 있다면 0100 이런식으로 0을 1로 바꾸어 표현하는 것이다. & , | , ~, ^, >>, & AND 연산자로 하나라도 0 이면 0으로 둘다 1이면 1의 출력값을 가진다. -> | OR 연산자로 하나라도 1이면 1이고 둘다 ..

언어/C++ 2022.04.03

C++ Vector(벡터) - find, erase, unique, sort, upper_bound, lower_bound 사용법

sort #include #include vector v; v.push_back(4); v.push_back(3); v.push_back(2); v.push_back(1); sort(v.begin(),v.end()); // 내림 차순 정렬 sort(v.begin(),v.end(),greater()); // 오름차순 정렬 혹은 직접 함수를 만들어 정렬 조건을 다르게 만들 수 있음 bool cmp(int a, int b){ return a>b; } sort(v.begin(),v.end(), cmp); // 오름차순 정렬 이게 a가 b보다 크면 true를 반환 아니면 false를 반환. 값이 true면 a를 선택 find #include #include vector a; a.push_back(1); a.pus..

언어/C++ 2022.04.02