STL 이란
잘 만들어진 소스코드를 재사용 하는 코드 라이브러리 입니다.
STL의 세가지 핵심요인은 클래스인 컨테이너(Container), 함수의 알고리즘(Algorithm)
이 둘을 연결시켜주는 반복자(Iterator)가 있습니다.
컨테이너(Container)
기본 자료형과 유저가 정의한 자료형을 담는 자료구조입니다.
vector, deque, list, set, multiset, map, multimap, pair 등등
https://www.cplusplus.com/reference/stl/
알고리즘(Algorithm)
검색, 정렬, 원소 수정, 개수 세기 등등을 쉽게 만들어주는 기능적 라이브러리입니다.
sorting, search, (non-)modifying, numeric 등등
https://www.cplusplus.com/reference/algorithm/?kw=algorithm
반복자(Iterator)
컨테이너의 저장된 원소를 순회하며 접근하는 방법을 제공합니다.
또한 사용자가 컨테이너와 알고리즘을 하나의 방법으로 접근하게 도와줍니다.
https://www.cplusplus.com/reference/iterator/
각 컨테이너 혹은 변수타입 뒤에 ::iterator 또는 ::const_iterator 을 붙여주면 사용할 수 있습니다.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec1;
vec1.push_back(10);
vec1.push_back(20);
vec1.push_back(30);
vector<int>::iterator it;
for(it = vec1.begin() ; it != vec1.end(); it++
cout << *it << endl;
}
vector<int> 에 대한 반복자로 it를 선언하여서, 순환을 쉽게하는 모습입니다.
STL은 제네릭(Generic) 프로그래밍을 추구합니다!
즉 제네릭이라는 것은 데이터 형식에 의존하지 않고, 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어서
재사용성!! 에 초점을 두는 프로그래밍 방식입니다.