C++ vector 정렬(sort) - 오름차순, 내림차순 포스팅 썸네일 이미지

C++/STL

C++ vector 정렬(sort) - 오름차순, 내림차순

1. 정렬(Sort) C++ 에서는 STL algorithm 라이브러리에서 sort 함수를 지원해준다. 정렬 방식은 퀵 정렬로서 빠른 속도를 보장한다. sort 함수는 일련의 반복자를 사용함으로 Set이나 Map 같은 컨테이너에서는 sort함수를 사용할 수는 없다. 2. 코 드 환경 : Visual studio 2019 #include #include #include using namespace std; void print(vector v) { for (int i = 0; i < v.size(); i++) { cout

2020.11.10 게시됨

[STL] Bitset 생성 및 초기화 사용법 포스팅 썸네일 이미지

C++/Container

[STL] Bitset 생성 및 초기화 사용법

1. bitset bitset은 0 또는 1, true 또는 false의 값을 갖도록 필요한 경우 사용할 수 있다. 이와 같은 형태의 따라서 여러가지 비트 연산을 할 수 있도록 여러 멤버 함수들을 지원한다. 또한, 마찬가지로 이러한 경우에 vector을 사용할 수도 있을 것이다. 하지만 이는 권장하지 않는 형태라는 등 여러가지 말이 많다. 그렇다면 어떠한 경우에 어떠한 것을 사용해야 하는가 하면 vector : 동적인 사이즈를 갖는 경우, 복잡한 비트 연산이 필요없는 경우 bitset : 정적인 사이즈를 갖는 경우, 복잡한 비트 연산이 필요한 경우( 10진수 변환, 비트 반전 등) 라고 분류 할 수 있다. 2. 코 드 환경 : Visual studio 2019 #include #include #inclu..

2020.11.10 게시됨

[STL] Priority_queue 생성, 삽입, 삭제 등 사용법 포스팅 썸네일 이미지

C++/Container

[STL] Priority_queue 생성, 삽입, 삭제 등 사용법

1. priority_queue priority_queue 는 우선순위 큐라고 한다. priority_queue는 queue 헤더의 같이 포함되어 있다. 따라서 queue를 include 하였다면 사용할 수 있다. priority_queue의 인터페이스는 stack과 비슷하여 queue에서 사용하였던 front나 back은 없고 stack에 있었던 top이 존재한다. 이를 우선순위 큐라고 하는 이유는 각 원소들에 우선순위를 부여하여 이 우선순위에 따라서 우선 처리가 높은 순으로 처리 순서가 정해지기 때문이다. 2. 코 드 환경 : Visual Studio 2019 #include #include using namespace std; int main() { priority_queue pq;// 기본값 : ..

2020.11.09 게시됨

[STL] Queue 생성, 삽입, 삭제 등 사용법 포스팅 썸네일 이미지

C++/Container

[STL] Queue 생성, 삽입, 삭제 등 사용법

1. queue queue(큐)는 선입선출(FIFO)의 구조로서 가장 먼저 들어온 것이 가장 먼저나가는 자료 구조이다. 이는 간단하게 선착순 줄서기를 생각하면 된다. 마치 줄을 선 순서처럼 가장 먼저 줄을 선사람이 가장 먼저 순번이 찾아오는 것과 마찬가지이다. STL에서는 stack처럼 queue도 템플릿 클래스로 구현되어 있어 간단한 멤버 함수들만 알고 있다면 간단하게 사용할 수 있다. 2. 코 드 환경 : Visual Studio 2019 #include #include using namespace std; int main() { queue q; if (q.empty()) { cout

2020.11.09 게시됨

[STL] Stack 생성, 삽입, 삭제 등 사용법 포스팅 썸네일 이미지

C++/Container

[STL] Stack 생성, 삽입, 삭제 등 사용법

1. stack stack(스택)은 후입선출(LIFO)의 구조로서 가장 마지막의 들어온 것이 가장 먼저 나가는 자료 구조이다. 마치 바구니의 상자들을 넣어서 쌓는 모습을 상상하면 된다. 이러한 바구니에서 아래에 있는 상자들을 꺼내기 위해서는 가장 마지막으로 넣었던 상자부터 차례대로 꺼내어야 한다. 바로 이러한 형태의 구조로 데이터를 저장하는 자료구조를 Stack이라고 한다. STL에서는 이러한 stack이 구현되어 있고 몇가지 멤버함수만 알고 있다면 간단하게 사용할 수 있다. 2. 코 드 환경 : Visual Studio 2019 #include #include using namespace std; int main() { stack stack; if (stack.empty()) { cout

2020.11.08 게시됨

[STL] Unordered_map, multimap 생성, 삽입, 삭제 등 사용법 포스팅 썸네일 이미지

C++/Container

[STL] Unordered_map, multimap 생성, 삽입, 삭제 등 사용법

1. unordered_map, _multimap unordered_map은 set과 unordered_set의 관계처럼 저장하는 원소들을 어느 정렬 방식(오름차순, 내림차순)에 따라 정렬이 되는 것이 아니라 일련의 삽입하는 순서를 유지하고자 할 때 사용할 수 있다. 그 외에 멤버 함수나 사용방법 들은 map과 multimap 동일하다. [STL] Map 생성, 삽입, 삭제 등 사용법 1. map map은 쌍의 값들을 저장하는 구조이다. map은 쌍의 값을 갖는다는 것 빼고는 대부분 set과 유사한 구조이다. 2020/11/05 - [C++/STL] - [STL] Set 생성, 삽입, 삭제 등 사용법 따라서 set에서 사용하였던.. notepad96.tistory.com unordered_map과 uno..

2020.11.08 게시됨

[STL] Unordered_set, multiset 생성, 삽입, 삭제 등 사용법 포스팅 썸네일 이미지

C++/Container

[STL] Unordered_set, multiset 생성, 삽입, 삭제 등 사용법

1. unordered_set, _multiset set과 multiset은 값을 삽입시키면 자동으로 정렬이되어 저장되는 구조였다. 만약 정렬을 하지 않고서 삽입한 일련의 순서를 유지시키고 싶다. 라고 한다면 unordered_set을 사용하면 된다. unordered_set과 unordered_multiset은 정렬이 되지 않는 점을 빼면 각각 set과 multiset와 동일하다. [STL] Set 생성, 삽입, 삭제 등 사용법 1. set set은 특정 기준에 의하여 원소들이 자동 정렬되는 노드 기반 컨테이너이다. set은 기본적으로 오름차순(less) 정렬이고 greater 조건자를 줌으로써 내림차순으로 정렬할 수도 있다. set은 유 notepad96.tistory.com unordered_set..

2020.11.07 게시됨

2의 n제곱 수인지 판별하기 포스팅 썸네일 이미지

C++/Algorithm

2의 n제곱 수인지 판별하기

1. 개 요 2의 n제곱 수를 2진수로 나타낸다면 2의 1제곱 2 -> 10 2의 4제곱 16 -> 10000 2의 6제곱 64 -> 1000000 2의 0제곱 1 -> 1 와 같이 1로 시작하며 오른쪽의 0이 채워지는 형태이다. 그렇다면 이제 각 수에서 1을 뺀 수를 2진수로 나타내보면 (2의 1제곱-1) 1 -> 1 (2의 4제곱-1) 15 -> 1111 (2의 6제곱-1) 63 -> 111111 (2의 0제곱-1) 0 -> 0 그러면 여기서 0제곱을 제외하고는 1로 2진수가 1로 이루어진 것을 확인 할 수 있다. 그렇다면 이와 같은 사실을 이용하여서 임의의 수 n이 2의 제곱수인지 판별할 수 있다. 임의의 수 n과 n-1를 비트 연산자 &를 사용하여 연산하면 n이 2의 제곱 수인 경우 그 결과 0이..

2020.11.07 게시됨