STL 이란?
C++의 STL(Standard Template Library)은 C++ 표준 라이브러리의 중요한 구성 요소로, 일반적인 데이터 구조와 알고리즘을 제공하여 프로그래머들이 간편하게 사용할 수 있도록 돕습니다. STL은 컨테이너, 알고리즘, 반복자, 함수 객체 등의 구성 요소로 이루어져 있습니다. 이들을 조합하여 다양한 작업을 수행할 수 있습니다.
STL의 주요 구성 요소
컨테이너(Container)
- vector: 동적 배열을 제공합니다. 크기를 동적으로 조정할 수 있습니다.
- list: 이중 연결 리스트를 제공합니다. 삽입 및 삭제에 효율적입니다.
- deque: 양쪽 끝에서 삽입 및 삭제가 가능한 큐를 제공합니다.
- stack: 후입선출(LIFO) 방식의 스택을 제공합니다.
- queue: 선입선출(FIFO) 방식의 큐를 제공합니다.
- set: 중복을 허용하지 않는 정렬된 집합을 제공합니다.
- map: 키-값 쌍으로 이루어진 정렬된 맵을 제공합니다.
알고리즘(Algorithm)
- sort: 컨테이너를 정렬합니다.
- find: 특정 값을 찾습니다.
- reverse: 컨테이너의 요소를 역순으로 정렬합니다.
- transform: 컨테이너의 요소를 다른 값으로 변환합니다.
- accumulate: 컨테이너의 요소를 합산합니다.
반복자(Iterator)
- 컨테이너의 요소에 접근하기 위한 인터페이스를 제공합니다.
- 컨테이너의 요소를 순차적으로 탐색하거나 수정할 수 있습니다.
함수 객체(Function Object)
- 함수처럼 동작하는 객체로, 알고리즘에서 사용됩니다.
- 주어진 조건에 따라 정렬, 탐색, 변환 등을 수행할 수 있습니다.
STL 사용예시
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
// vector 컨테이너 생성
std::vector<int> numbers = {5, 2, 8, 3, 1};
// 알고리즘을 사용하여 컨테이너 정렬
std::sort(numbers.begin(), numbers.end());
// 정렬된 숫자 출력
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
위의 예제에서는 vector 컨테이너를 생성하고, sort 알고리즘을 사용하여 컨테이너의 요소를 정렬합니다. 그 후, 정렬된 숫자를 출력합니다. 이처럼 STL은 일반적인 작업을 간편하게 처리할 수 있도록 해줍니다.
STL은 더 많은 컨테이너, 알고리즘, 반복자, 함수 객체 등을 제공합니다. 필요한 작업에 맞게 적절한 STL 구성 요소를 사용하여 코드를 작성할 수 있습니다.
2023.07.06 - [DEV] - [C++] 포인터 pointer 란?
[C++] 포인터 pointer 란?
포인터 pointer 란? C++에서 포인터(pointer)는 메모리 주소를 저장하는 변수입니다. 포인터는 다른 변수 또는 데이터 구조에 대한 참조를 저장하고 사용하는 데 사용됩니다. 포인터를 사용하여 메모
iknowandyouknow.tistory.com
2023.06.30 - [DEV] - [C++] Thread 란? + 예제
[C++] Thread 란? + 예제
Thread 란? C++의 스레드(Thread)는 동시에 실행될 수 있는 독립적인 실행 흐름을 나타내는 개념입니다. 각각의 스레드는 별도의 스택을 가지며, 코드의 일부분을 동시에 실행할 수 있습니다. 멀티스
iknowandyouknow.tistory.com
2023.06.30 - [DEV] - [C++] IOCP 설명 / 예제
[C++] IOCP 설명 / 예제
IOCP 란? IOCP(입출력 완료 포트, Input/Output Completion Port)는 Windows 운영 체제에서 비동기 입출력 작업을 처리하기 위한 메커니즘입니다. IOCP는 I/O 작업에 대한 효율성과 확장성을 제공하여 다중 클라
iknowandyouknow.tistory.com
'DEV' 카테고리의 다른 글
[C++] Thread 란? + 예제 (0) | 2023.06.30 |
---|---|
[C++] IOCP 설명 / 예제 (0) | 2023.06.30 |
[ORACLE] LOCK 확인 및 해제 (0) | 2023.06.19 |
[ORALCE] DDL, DML, DCL, TCL 이란? (0) | 2023.06.19 |
[HTML] disabled 정의 / 활용 (0) | 2023.05.17 |