본문 바로가기

C++/STL

(6)
[C++/STL] map, unordered_map 해시와 같이 Key와 Value의 쌍으로 문제를 해결해야 할 경우가 있습니다. C++에서 이를 도와주는 것들이 바로, map과 unordered_map입니다. 더 넓혀 본다면 multimap과 unordered_multimap도 있겠네요. map과 unordered_map의 차이점은 키를 정렬하느냐 마느냐입니다. map은 정해진 정렬 기준(기본값은 오름차순입니다.)에 따라 정렬됩니다. undordered_map은 정렬을 하지 않습니다. map과 multimap의 차이점은 키를 중복으로 가질 수 있느냐 없느냐입니다. map은 유일한 단 하나의 키만 가질 수 있지만, multimap은 여러 키를 중복이 가능하다는 것입니다. 이를 제외한 멤버 함수의 사용법 등은 모두 동일합니다. 그러므로, map을 기준으로 ..
[C++/STL] deque (덱) deque는 입력과 출력이 양쪽 끝에서 이루어지는 자료구조입니다. 큐와는 다르게 뒤에서 삭제가 가능하고 앞에서 입력이 가능합니다. 뒤에서만 입력과 출력이 가능한 스택과 달리 앞에서도 입력과 출력이 가능합니다. 그러나, 벡터와는 달리 내부 요소들이 연결만 유지한 상태이기에, 다른 공간에 흩어져 존재할 수도 있습니다. 이러한 덱을 C++에서 라이브러리로 제공합니다. #Include #include template class deque; 선언 방법 deque d1; // 빈 int형 덱 deque d2(4,100); // 4개의 100을 기본으로 넣은 덱 deque d3(d2.begin(), d2.end()); // d2의 반복자 deque d..
[C++/STL] vector (벡터) C/C++에서의 배열은 한 번 선언해주면 크기를 바꿀 수 없습니다. 그래서 C언어에서는 malloc 함수를 통해서 가변 배열을 만들어줘야 했습니다.(비슷하게 C++도 new 연산자를 사용해 동적 할당으로 가변 배열을 만들 수는 있습니다.) 하지만, C++에서는 편리하게 클래스에서 가변 배열을 지원해줍니다. 그것이 vector 입니다. 이 vector에 대해서 알아보겠습니다. #include vector는 vector헤더파일을 선언해야 사용할 수 있습니다. #include template class vector; 선언 방법 vector v1; // int형의 빈 벡터 vector v2(3); // 크기를 3, 초기 값으로 0을 설정한 벡터 ..
[C++/STL] priority_queue (우선순위 큐) 이번에는 priority_queue에 대해 알아보겠습니다. 우선순위 큐는 아래 내용을 참고해주세요. [자료구조] 우선순위 큐와 힙 [자료구조] 우선순위 큐와 힙 우선순위 큐(Priority Queue) 우선순위 큐의 큐는 먼저 들어온 데이터가 먼저 나가는, 그 큐가 맞다. 둘의 차이점이라면, 우선순위 큐는 우선순위가 높은 데이터가 먼저 출력되는 것이 차이다. 아래 ggjjdiary.tistory.com #Include priority_queue는 queue 헤더파일에 같이 존재합니다. #include template class priority_queue; Priority_queue의 기본 컨테이너가 벡터입니다. 다음에 Compare가 있는데요, 저 부분이 우선순위를 나타내는 부분이라고 생각하시면 됩니다...
[C++/STL] queue (큐) 이번에는 STL의 큐를 알아보겠습니다. 큐에 대한 설명은 이쪽을 참고하시거나 검색을 해주세요. [자료구조] 큐 [자료구조] 큐 큐 자료의 입력과 출력이 FIFO(First In First Out)의 형태를 띄는 자료구조이다. LIFO의 스택과는 달리, 먼저 들어간 자료가 먼저 출력된다. 입력은 뒤(rear)에서, 출력은 앞(front)에서 일어난다. 줄을 서 ggjjdiary.tistory.com #include queue는 queue 헤더파일에 들어있습니다. #include template class queue; queue의 기본 컨테이너는 덱입니다. 선언 방법 queue q1; // int 형의 빈 큐 queue q2({ 1, 2, 3, 4, 5 }); // 큐에 초기값으로 1, 2, 3, 4, 5를..
[C++/STL] stack (스택) C++ STL 컨테이너에는 자료구조 스택에 대한 연산들을 제공해주고 있습니다. 이에 대해 알아보겠습니다. 혹시 자료구조에 대한 스택을 알고 싶으시다면 아래를 참조하시거나 검색해주세요. [자료구조] 스택 [자료구조] 스택 시작하기에 앞서, 여기서 자료구조를 구현할 때 주로 C++을 사용했다. 어려운 문법들이나 라이브러리들을 사용하지 않았기에 C언어로 공부하는 사람들도 참고하기 좋을 것이다. 어디까지나 참 ggjjdiary.tistory.com #include stack은 stack 헤더파일에 들어있습니다. #include template class stack; 컨테이너가 기본 덱으로 설정되어있습니다. 선언 방법 stack st1; // int 형의 빈 스택 stack st2({ 1, 2, 3, 4, 5 }..