STL이란?
- STL은 템플릿 기반의 데이터 구조와 알고리즘을 제공하는 라이브러리입니다.
- STL을 사용하면, 프로그래머는 데이터를 저장하고 처리하는 데 필요한 표준화된 도구를 활용할 수 있습니다.
- 장점:
- 코드 재사용성 향상.
- 안전하고 빠른 데이터 구조 및 알고리즘 제공.
- 타입에 독립적인 템플릿 기반 설계.
종류?
컨테이너(Containers)
(1) 순차 컨테이너 (Sequence Containers)
컨테이너설명예시
vector | 동적 배열 | vector<int> v; |
deque | 양방향에서 빠른 삽입/삭제가 가능한 배열 | deque<int> d; |
list | 이중 연결 리스트 | list<int> l; |
array | 크기가 고정된 정적 배열 | array<int, 5> arr; |
(2) 연관 컨테이너 (Associative Containers)
컨테이너설명예시
set | 중복되지 않는 정렬된 데이터 집합 | set<int> s; |
multiset | 중복 허용 정렬 데이터 집합 | multiset<int> ms; |
map | 키와 값의 쌍으로 저장된 정렬된 데이터 | map<int, string> m; |
multimap | 중복 키를 허용하는 키-값 쌍 | multimap<int, string> mm; |
(3) 비정렬 컨테이너 (Unordered Containers)
컨테이너설명예시
unordered_set | 정렬되지 않은 고유 값 집합 | unordered_set<int> us; |
unordered_map | 정렬되지 않은 키-값 쌍 | unordered_map<int, string> um; |
컨테이너는 데이터를 담아두는 그릇이라고 생각하면 됩니다.
데이터를 보관하는 방법에 따라 여러가지 종류가 있습니다.
ex)
컨테이너비유역할
vector | 길이가 늘어나는 배열 | 데이터를 순서대로 저장 (ex: 리스트). |
list | 이중 연결 리스트 | 순서대로 저장 + 빠른 삽입/삭제. |
map | 사전 | 키(key)와 값(value)을 저장. |
ex)
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v = {10, 20, 30}; // 데이터를 순서대로 저장
v.push_back(40); // 데이터 추가
for (int x : v) {
cout << x << " "; // 출력: 10 20 30 40
}
return 0;
}
이터레이터는 데이터를 하나씩 꺼내는 도구(집게)라고 생각하면 됩니다.
ex)
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4};
// 이터레이터 사용
for (auto it = v.begin(); it != v.end(); ++it) {
cout << *it << " "; // 출력: 1 2 3 4
}
return 0;
}
알고리즘은 무엇으로 비유할 수 있을까?
물건을 정리하는 방법이라고 생각하시면 됩니다.
컨테이너에 저장된 데이터를 처리하는 방법입니다.
- 정렬(sort): 데이터를 오름차순 또는 내림차순으로 정렬합니다.
- 검색(find): 특정 요소를 찾습니다.
- 변환(transform): 데이터를 변환합니다.
ex)
#include <iostream>
#include <vector>
#include <algorithm> // 알고리즘 헤더
using namespace std;
int main() {
vector<int> v = {5, 2, 8, 1, 3};
sort(v.begin(), v.end()); // 데이터를 오름차순으로 정렬
for (int x : v) {
cout << x << " "; // 출력: 1 2 3 5 8
}
return 0;
}
'언리얼(Unreal) > 엔진' 카테고리의 다른 글
24.12.10 언리얼(람다함수 사용법) (0) | 2024.12.10 |
---|---|
24.12.09 언리얼(STL의 자료구조과 알고리즘) (1) | 2024.12.09 |
24.12.07 언리얼(스마트 포인터에 대하여) (0) | 2024.12.07 |
24.12.06 언리얼 (템플릿에 대하여) (1) | 2024.12.06 |
24.12.06 언리얼( Cpp의 상속의 개념) (0) | 2024.12.06 |