C++의 String class에 대해서 분석해본 내용입니다. C++ reference를 참고하였습니다. 1. String의 특성 우선 C++ String class는 STL에 속하지는 않습니다. 그냥 라이브러리에 있는 표준 클래스입니다. String은 연속적인 문자를 담을 수 있고 원소 각각은 char로 되어있습니다. 그리고 Vector와 같이 Random Iterator를 지원한다는 점이 특징입니다. 2.String의 구성 String은 알고리즘에서 막~ 다뤄본 경험이 조금 없어서 중요해 보이는 것이나, 필요에 따라서 하나하나 모두 살펴보겠습니다. 2.1) 생성자 생성자에 관한 설명은 C++ reference에 아주 잘 나와있습니다. (코드 예제도 이번에는 C++ reference에서 가져왔습니다.)..
BFS에 자주 사용되는 Queue (알고리즘 문제풀이 기준), 그리고 정렬에 자주 사용되는 Prioriry Queue(우선순위 큐, 힙)의 사용법에 대해서 알아보도록 하겠습니다. ( Queue에 대한 정보는 C++ Reference를 참고했습니다.) 1. Queue의 특성 Queue는 FIFO입니다. FIFO는 First in First out으로, 먼저 들어온 것이 먼저 나갑니다. 그냥 마트나, 뭐 놀이기구 탈 때 줄 서는 거랑 똑같다고 생각하면 됩니다. 먼저 오는 사람이 탈출구에서 가장 가깝고 먼저 서비스 받음을 알 수 있습니다. template을 보면, template class queue입니다. queue도 stack과 마찬가지로 내부적으로는 deque로 구현되어 있습니다. 그래서 queue의 메..
평소 알고리즘 문제를 풀면서 Stack의 주로 사용했던 부분들 위주로 설명한 글입니다. (C++ reference 참고했습니다.) 1. Stack의 특성 Stack은 LIFO (Last In First Out) 후입 선출입니다. 먼저 들어간 게 먼저 나오는 것이 아닌 늦게 들어간 것이 먼저 나오는 구조입니다. 그리고 자료의 삽입 및 추출(?)이 Stack의 한 곳에서만 이루어집니다. Stack의 표준 컨테이너는 Deque로 되어있습니다. ※ template class stack; 다른 STL들의 자료구조에 비해서 조금 덜 쓰이는 면이 있는 것 같습니다. 간단히 알아보도록 하겠습니다. 2. Stack의 구성 2.1) 생성자 복사 생성자나, 다른 생성자들이 있지만 Stack은 주로 텅 빈 Stack을 만드는..
이 글은 완벽한 분석은 아닙니다. 평소 알고리즘 문제를 풀 때나, 개발하면서 Vector을 사용할 때 주로 사용했던 것들만 적었습니다 :) 완전한 메뉴얼은 C++ reference를 참고하시는 걸 추천합니다. 그냥 Vector를 바로 사용하고 싶은데 잘 모르는 경우 글을 한번 쭉 읽어보고 이해정도만 하시는 걸 추천드립니다. 함수를 하나하나 살펴보기 전에 Vector의 특성에 대해 살펴보겠습니다. (C++ reference참고했습니다.) 1. Vector의 특성 Vector는 크기를 변경시킬 수 있는 시퀀스 컨테이너입니다. 배열처럼 Vector는 원소에 연속 저장 위치를 사용하므로 원소에 대한 일반 포인터의 오프셋 []을 사용하여 배열처럼 효율적으로 원소에 액세스 할 수 있습니다. 그러나 배열과는 다르게 ..