본문 바로가기

분류 전체보기

(134)
6. Stack 시퀀스 컨테이너에 이어서 설명할 것은 컨테이너 어댑터이다. 컨테이너 어댑터에는 크게 stack, queue, priority_queue의 세 가지가 있으며 셋 다 자주 쓰이지만 각각의 특징은 꽤 다르다. stack(스택)은 LIFO(Last-In-First-Out) 방식으로 작동하는 템플릿 클래스이다. 헤더파일 을 인클루드하면 사용이 가능하다. stack 클래스는 에서 인클루드하는 헤더파일 에 정의되어 있다. (앞서 살펴본 컨테이너들에 비해 컨테이너 어댑터의 클래스 정의는 비교적 짧다.) 또한 스택은 기본적으로 deque 컨테이너를 사용하기 때문에 내부에서 를 인클루드한다. 따라서 을 인클루드하면 덱을 사용할 수도 있다. 여러 가지 선언 방법이 존재하는 컨테이너와는 달리 컨테이너 어댑터는 선언 방법이 한..
5. List & Forward List list(리스트)는 벡터, 덱과는 또 다른 시퀀스 컨테이너로, 벡터와 덱이 배열 기반 컨테이너인 반면 리스트는 노드 기반 컨테이너이다. 헤더파일 를 인클루드하면 list를 사용할 수 있으며, 내부에서 인클루드하는 헤더파일 에 list 클래스가 정의되어 있다. list는 이중 연결 리스트로 구현된다. 리스트의 선언과 초기화 역시 벡터, 덱과 같은 방법으로 할 수 있다. 연산자는 벡터, 덱에서 사용할 수 있는 것들 중 []을 제외한 $7$가지를 사용할 수 있다. list의 멤버 함수는 vector, deque와 약간 다르다. 다음은 vector 또는 deque에 내장된 것과 유사한 멤버 함수들이다. list::push_back list::pop_back list::push_front list::pop_fro..
4. Deque deque(덱)은 벡터와 유사한 시퀀스 컨테이너이며 벡터에 비해 추가적인 기능이 더 있다. 헤더파일 를 인클루드하면 사용할 수 있고, 에서 인클루드하는 헤더파일 에 deque 클래스가 정의되어 있다. 덱의 선언 방법은 기본적으로 벡터의 선언 방법과 같고, 이전 글에서 설명한 다섯 가지 선언 방법을 덱에도 그대로 적용할 수 있다. 연산자 역시 벡터에서 설명한 것과 같이 C 문법에 존재하는 $6$가지 비교, 동등 연산자와 , []까지 $8$가지의 연산자를 쓸 수 있다. 멤버 함수는 deque와 vector에서 약간의 차이가 있다. deque는 Double Ended Queue의 줄임말로 이름에서 알 수 있듯이 앞쪽에도 원소를 추가할 수 있기 때문에 이와 관련된 추가적인 멤버 함수가 존재한다. deque의 멤..
3. Array & Vector array(어레이)는 C++11에 추가된 시퀀스 컨테이너로 C의 배열과 유사하다. C++에서 헤더파일 를 인클루드하면 array를 사용할 수 있다. 이 헤더파일에는 array 구조체가 정의되어 있다. STL은 템플릿으로 구현되어 있기 때문에 STL 변수를 선언할 때는 typename을 명시해 주어야 한다. array의 경우 선언할 때 typename과 함께 array의 크기를 명시해야 한다. array a; 이렇게 하면 크기가 $5$인 array가 선언된다. array는 배열과 마찬가지로 지역 변수로 선언할 경우 쓰레기값이 남아 있으므로 초기화를 해야 한다. array의 멤버 함수는 다음과 같다: a.front(); a의 첫 번째 원소를 참조한다. a.back(); a의 마지막 원소를 참조한다. a.si..
2. STL Intro STL은 Standard Template Library의 약자로 프로그램에 필요한 자료구조, 알고리즘 등을 템플릿으로 제공하며, 크게 컨테이너(Container), 반복자(Iterator), 알고리즘(Algorithm), 함수 객체(Function Object), 어댑터(Adaptor), 할당기(Allocator)의 여섯 가지 구성 요소로 이루어져 있다. 각각에 대한 설명은 다음과 같다: 컨테이너(Container): 데이터를 저장하는 객체로 컬렉션 또는 자료구조라고도 한다. 표준 컨테이너와 비표준 컨테이너가 있는데, 표준 컨테이너는 다시 연속 컨테이너(Sequence Container)와 연관 컨테이너(Associative Container)로 나뉜다. 비표준 컨테이너는 유사(근사) 컨테이너(Almos..
1. Intro 이 블로그에서는 기본적인 STL, 자료구조 및 알고리즘을 다룬다. 카테고리는 다음과 같다. A. Intro & STLB. Basic AlgorithmsC. Sorting & SearchD. Math & Number TheoryE. Dynamic ProgrammingF. StringsG. GeometryH. Trees & GraphsI. Data StructuresJ. OptimizationK. Others Greedy는 그 자체로 범위가 매우 넓은데 세분화할 게 없어서 카테고리로 분류하지 않았다. 또한 Others 항목에 들어가는 것들은 일반적으로 배우는 알고리즘 순서와는 별로 상관이 없으므로 일부는 앞의 글들을 읽지 않아도 바로 읽을 수 있다.목차는 다음과 같다. 오타를 발견했거나 더 넣을 만한 것, ..