본문 바로가기
프로그래밍/C++

STL

by Nessie! 2022. 7. 27.

원문: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jins8611&logNo=110166546425 

 

STL 이란.

1. STL 이란. Standard Template Library. 기본 템플릿 라이브러리. C++에서 제공하는 표준 라이브...

blog.naver.com

그 외 참고사이트: https://min-zero.tistory.com/entry/C-STL-2-1-%EB%B0%98%EB%B3%B5%EC%9E%90-%EB%B0%98%EB%B3%B5%EC%9E%90iterator

 

 1. STL 이란.

 

Standard Template Library. 기본 템플릿 라이브러리.

 

C++에서 제공하는 표준 라이브러리 이다.

 

일반적인 자료구조와 알고리즘으로 구현되어 있다.

 

swap, for (for-each) 등등 이 있다.

 

템플릿을 사용한 일반화 프로그래밍.

 

기본적으로 쓰는 템플릿 표준 헤더들을 모아놓은 것으로 다영한 자료구조들이 들어있음.

 

*라이브러리란.

 

라이브러리는 사용 할 수 있게끔 이미 만들어진것들이다.

 

자주 사용하는 함수와 데이터를 실행가능한 바이너리 형태로 묶어놓은 파일.

 

라이브러리는 독립성이 보장되지만, 라이브러리만으로 실행되는것은 아니다.

 

이미 완성된 형태로 굳어있는 준 완성 형태.

 

 

 

 

 2. STL의 구성요소

 

1)컨테이너( container ) 

 

   - 객체를 저장하는 객체로 컬렉션 혹은 자료구조라고도 한다.

 

2) 반복자 ( iterator ) 

 

   - 포인터와 비슷한 개념. 컨테이너의 원소를 가리키고, 가리키는 원소에 접근하여 

      

      다음 원소를 가리키게 하는 기능을 함.

 

3) 알고리즘 (Algorithm )

 

  - 정렬, 삭제 , 검색 , 연산 등을 해결하는 일반화된 방법을 제공하는 함수 템플릿.

 

4) 함수객체 ( Function Object ) 

 

  - 함수처럼 동작하는 객체로 operator() 연산자를 오버로딩한 객체. 

     

     컨테이너와 알고리즘 등에 클라이언트 정책을 반영.

 

5) 어댑터 ( Adaptor ) 

 

  - 구성 요소의 인터페이스를 변경해 새로운 인터페이스를 갖는 구성요소로 변경.

 

6) 할당기 (Allocator ) 

 

  - 컨테이너의 메모리 할당 정책을 캡슐화한 클래스 객체로.

 

    모든 컨테이너는 자신만의 기본 할당기를 가지고 있다.

 

 

 

 

3. STL의 장단점.

 

장점 : 방어코딩 그딴거 없음. 속도는 빠름.

 

단점 : 방어코딩을 개나 준 통에. 내부가 복잡해서 분석이 힘듬. (나중에는 만들어서 쓰게 됨.)

 

STL의 핵심은 목적에 맞게 사용.

 

어떤 기능이 주요 기능이 될지에 따라 ( 삽입, 삭제 , 검색 ) 적합한 자료구조를 판단해서 사용.

 

 

 

4. STL 에서 제공하는 자료구조.

 

스택 , 큐 , 덱 , 리스트 , 백터 ( 동적배열 )  , 스트링 , 맵 ( 트리 )  ,셋

 

이중에서 맵 , 리스트 , 백터는 무조건 쓴다. 숙지를 잘해야 한다.

 

 

 

맵게 셋은 트리의 구조로 되어있는데.

 

트리의 검색속도가 엄청나게 빠르다.

 

트리를 사용하면 32번 안에 21억개의 데이터를 찾을 수 있다.

 

동적배열이 최악의 경우에 21억번안에 찾는것에 비하면 알 수 있다.

 

매우 빨라서 속도가 배열에서 할 수 있는 랜덤 엑세스에 가깝다.

'프로그래밍 > C++' 카테고리의 다른 글

OOP 알아보기  (0) 2022.08.08
C++ vector  (0) 2022.07.27
[C++] 연산자 우선순위에 대한 정리  (0) 2022.06.29
C++ 자료형에 대한 정리  (0) 2022.06.29
2022-06-21 / C++ 입문 야구게임 / exe  (0) 2022.06.28

댓글