STL이란? STL과 std 뭐가 다른가?
C++ 프로그래밍 언어에서, C++ 표준 라이브러리(C++ Standard Library)는 C++ 표준 자체로 쓰여진 클래스들과 함수들의 집합니다. C++ 표준 라이브러리는 여러 제네틱 컨테이너들, 그리고 이러한 컨테이너들과 함수 객체, 제네릭 문자열, 스트림(파일 입출력과 인터렉티브를 포함하는), 몇몇 언어 특징 그리고 숫자의 제곱근을 찾는 것과 같은 작업을 위한 모든 함수들을 활용하기 위한 함수들을 제공한다. ".h" 로 끝나지 않는 헤더는 C++ 표준 라이브러리에는 존재하지 않는다. C++ 표준 라이브러리의 특징은 std 이름공간(namespace) 내에 선언된다는 것이다.
C++표준 라이브러리는 표준 템플릿 라이브러리(STL : Standard Template Library)에 의해 도입된 관습에 기반하며, C++ 표준 라이브러리와 STL은 많은 특징들을 공유하지만, 둘 중 어느것도 다른 하나의 상위 집합은 아니다.
참고: https://ko.wikipedia.org/wiki/C%2B%2B_%ED%91%9C%EC%A4%80_%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC
표준 템플릿 라이브러리 STL은 C++를 위한 라이브버리로서 C++표준 라이브러리의 많은 부분에 영향을 끼쳤다. STL은 알고리즘, 컨테이너, 함수자, 그리고 반복자라고 불리는 네 가지의 구성 요소를 제공한다.
STL은 연관 뱇열 같은 C++를 위한 일반 클래스들의 미리 만들어진 집합을 제공하는데, 이것들은 어떤 빌트인 타입과도 그리고 어떤 사용자 정의 타입과도 같이 사용될 수 있다. STL알고리즘들은 컨테이너들에 독립적인데, 이것은 라이브러리의 복잡성을 눈에 띄게 줄여주었다.
STL은 결과를 템플릿의 사용을 통해 달성한다.
간단하게 말하면 STL은 일반적으로 많이 사용될 수 있는 자료구조와 알고리즘 모음 라이브러리 라고 말할 수 있다.
STL의 구성요소
Container : 데이터를 저장하는 객체들이다. 자료구조. 클래스 템플릿으로 구현되어있다.
Container는 크게 표준 연속 컨테이너 Sequence Container, 표준 연관 컨테이너 Associative container로 나뉜다.
Sequence Container의 종류: array, vector, list, deque
Associative Container의 종류: set, multiset, map, multimap, hash_set, hash_map, hash_multiset 그리고 hash_multimap
자세한 내용들: https://ko.wikipedia.org/wiki/%ED%91%9C%EC%A4%80_%ED%85%9C%ED%94%8C%EB%A6%BF_%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC
Iterator
포인터와 비슷한 개념으로 컨테이너의 원소를 가리키고, 가리키는 원소에 접근하여 다음 원소를 가리켜 준다. 순회
Algorithm
정렬, 삭제, 검색, 연산 등을 해결하는 일반화된 방법을 제공하는 함수 템플릿.
Function Object
함수처럼 동작하는 객체로 operator()연산자를 오버로딩 한 객체
컨테이너와 알고리즘 등에 클라이언트 정책을 반영하게 한다.
Container Adapter
구성요소의 인터페이스를 변경해 새로운 인터페이스를 갖는 구성요소로 변경
Allocator
컨테이너의 메모리 할당 정책을 캡슐화한 클래스 객체로 모든 컨테이너는 자신만의 할당기를 가지고 있다.
'C++ 코딩 > C++ 기초개념' 카테고리의 다른 글
C++ 반복자 Iterator (0) | 2022.11.06 |
---|---|
C++ Operator Overloading 연산자 오버로딩 (0) | 2022.09.26 |
<C++ 기초> 공용체 union (0) | 2021.03.18 |
<C++ 기초> 구조체 struct, 구조체 응용(*포인터 인수로 사용하기) (0) | 2021.02.24 |
<C++ 기초> 클래스 Class의 기본 - 맴버, 멤버함수, private, public, protect, 캡슐화 (1) | 2021.02.24 |
<C++ 기초> 식과 연산자, 연산자의 종류와 우선순위 (0) | 2021.02.23 |
<C++ 기초> 동적배열, sti vector, 멤버함수 (0) | 2021.02.18 |
<C++ 기초> typedef, 열거형 enum (0) | 2021.02.16 |