[c++] 자료구조 및 알고리즘 라이브러리 활용 방법
이번 포스트에서는 C++에서 자료구조와 알고리즘을 구현하고 활용하기 위해 사용되는 표준 라이브러리에 대해 알아보겠습니다.
Contents
STL (Standard Template Library)
C++ 표준 라이브러리는 STL이라고도 불리는데, 이는 자료구조와 알고리즘을 구현하기 위한 템플릿 클래스와 함수들로 구성되어 있습니다. STL의 핵심 구성 요소로는 다음이 있습니다.
- 컨테이너 (Containers): 벡터, 리스트, 큐, 스택, 맵, 셋 등 다양한 자료구조를 제공합니다.
- 반복자 (Iterators): 컨테이너의 원소에 접근하기 위한 인터페이스를 제공합니다.
- 알고리즘 (Algorithms): 정렬, 검색, 변환 등 다양한 알고리즘을 제공합니다.
STL은 #include <algorithm>
, #include <vector>
, #include <list>
등의 형태로 사용할 수 있습니다.
자료구조 활용 예시
벡터 (Vector)
벡터는 동적 배열을 나타내는 자료구조로, 크기가 가변적입니다. 다음은 벡터를 선언하고 활용하는 간단한 예제 코드입니다.
#include <vector>
#include <iostream>
int main() {
std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
for (int i : vec) {
std::cout << i << " ";
}
return 0;
}
큐 (Queue)
큐는 FIFO(First-In-First-Out) 순서로 데이터를 처리하는 자료구조입니다. 다음은 큐를 선언하고 활용하는 간단한 예제 코드입니다.
#include <queue>
#include <iostream>
int main() {
std::queue<int> q;
q.push(1);
q.push(2);
q.push(3);
while (!q.empty()) {
std::cout << q.front() << " ";
q.pop();
}
return 0;
}
알고리즘 활용 예시
이진 탐색 (Binary Search)
이진 탐색은 정렬된 배열에서 원하는 값을 찾는 알고리즘으로, STL에서 제공됩니다. 다음은 이진 탐색을 활용하는 간단한 예제 코드입니다.
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int target = 5;
if (std::binary_search(vec.begin(), vec.end(), target)) {
std::cout << "Found";
} else {
std::cout << "Not found";
}
return 0;
}
정렬 (Sorting)
STL은 다양한 정렬 알고리즘을 제공합니다. 다음은 벡터를 정렬하는 간단한 예제 코드입니다.
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
std::sort(vec.begin(), vec.end());
for (int i : vec) {
std::cout << i << " ";
}
return 0;
}
이렇게 C++ 표준 라이브러리의 STL을 활용하여 다양한 자료구조와 알고리즘을 구현하고 활용할 수 있습니다. 라이브러리를 활용함으로써 개발자는 효율적이고 안정적인 코드를 작성할 수 있습니다.
참고 문헌:
- https://en.cppreference.com/w/cpp/header
- https://www.geeksforgeeks.org/c-magicians-stl-algorithms/