
C++을 본격적으로 다루기 시작하면 반드시 마주하게 되는 것이 STL(Standard Template Library)이다. STL은 자주 쓰이는 자료구조와 알고리즘, 반복자(iterator) 등을 표준 라이브러리 형태로 제공한다. 직접 구현하지 않고도 효율적인 코드를 작성할 수 있기 때문에, STL을 잘 활용하는 것이 곧 C++을 잘 쓰는 길이다.
이번 글에서는 C++ 표준 라이브러리(STL)의 핵심 요소들을 모두 정리해본다.
STL은 크게 3가지 요소로 구성된다.
1. 컨테이너 (Containers): 데이터를 담는 자료구조
2. 알고리즘 (Algorithms): 정렬, 탐색, 수정 등 다양한 작업 함수
3. 반복자 (Iterators): 컨테이너를 순회하며 접근하기 위한 포인터 개념
std::vector<int> vec = {1, 2, 3};
vec.push_back(4);
std::map<std::string, int> m;
m["apple"] = 3;
std::unordered_map<std::string, int> um;
um["banana"] = 2;
std::stack<int> s;
s.push(10);
<algorithm> 헤더를 통해 다양한 알고리즘을 바로 사용할 수 있다.
std::sort(vec.begin(), vec.end());
auto it = std::find(vec.begin(), vec.end(), 5);
vec.erase(std::remove(vec.begin(), vec.end(), 6), vec.end());
컨테이너의 요소를 순회할 때 반복자를 사용한다. 대표적으로 begin()과 end()가 있다.
for (auto it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << " ";
}
rbegin(), rend())#include <iostream>
int main() {
int a;
std::cout << "숫자 입력: ";
std::cin >> a;
std::cout << "입력한 숫자: " << a << '\n';
}
cin, cout: 표준 입력/출력cerr, clog: 에러 로그, 일반 로그auto now = std::chrono::system_clock::now();
std::time_t t = std::chrono::system_clock::to_time_t(now);
std::cout << std::ctime(&t);
duration: 시간 간격 표현time_point: 특정 시간clock: 현재 시간 측정 (system_clock, steady_clock 등)#include <thread>
void task() {
std::cout << "스레드 실행\n";
}
int main() {
std::thread t(task);
t.join();
}
std::vector<int> vec = {1, 2, 3};
vec.push_back(4);
std::list<int> lst = {1, 2, 3};
lst.push_front(0);
std::map<std::string, int> m;
m["key"] = 100;
std::unordered_map<std::string, int> um;
um["id"] = 200;
STL은 C++의 가장 강력한 기능 중 하나다. 데이터를 저장하고 조작하는 컨테이너부터, 자주 쓰이는 알고리즘, 그리고 이를 유연하게 연결해주는 반복자까지.
처음엔 외워야 할 게 많고 생소할 수 있지만, 직접 코드를 짜고 활용해보면 손에 익기 시작한다. STL을 잘 익혀두면 실무에서도 훨씬 빠르고 깔끔한 C++ 코드를 작성할 수 있다.