logo

C++ 표준 템플릿 라이브러리(STL)

STL(표준 템플릿 라이브러리)은 목록, 스택, 배열 등과 같은 일반적인 프로그래밍 데이터 구조 및 기능을 제공하기 위한 C++ 템플릿 클래스 집합입니다. 이는 컨테이너 클래스, 알고리즘 및 반복자의 라이브러리입니다. 이는 일반화된 라이브러리이므로 해당 구성요소가 매개변수화됩니다. 실무 지식 템플릿 클래스 STL 작업을 위한 전제 조건입니다.

C++ 표준 템플릿 라이브러리(STL)는 C++ 프로그램 개발을 단순화하는 데 사용할 수 있는 알고리즘, 데이터 구조 및 기타 구성 요소의 모음입니다. STL은 벡터, 목록, 맵과 같은 다양한 컨테이너뿐만 아니라 데이터 검색, 정렬, 조작을 위한 알고리즘도 제공합니다.



STL의 주요 이점 중 하나는 다양한 데이터 유형에 적용할 수 있는 일반적이고 재사용 가능한 코드를 작성하는 방법을 제공한다는 것입니다. 즉, 알고리즘을 한 번 작성하면 각 유형에 대해 별도의 코드를 작성할 필요 없이 다양한 유형의 데이터에 사용할 수 있습니다.

STL은 효율적인 코드를 작성하는 방법도 제공합니다. STL의 많은 알고리즘과 데이터 구조는 최적화된 알고리즘을 사용하여 구현되므로 사용자 정의 코드에 비해 실행 시간이 더 빨라질 수 있습니다.

안드로이드 이스터 에그가 뭐야?

STL의 주요 구성 요소 중 일부는 다음과 같습니다.

  1. 컨테이너: STL은 데이터를 저장하고 조작하는 데 사용할 수 있는 벡터, 목록, 맵, 세트 및 스택과 같은 다양한 컨테이너를 제공합니다.
  2. 알고리즘: STL은 컨테이너에 저장된 데이터를 조작하는 데 사용할 수 있는 정렬, 찾기 및 바이너리 검색과 같은 다양한 알고리즘을 제공합니다.
  3. 반복자: 반복자는 컨테이너의 요소를 순회하는 방법을 제공하는 객체입니다. STL은 다양한 유형의 컨테이너와 함께 사용할 수 있는 Forward_iterator, bidirection_iterator 및 Random_access_iterator와 같은 다양한 반복기를 제공합니다.
  4. 함수 개체: functor라고도 알려진 함수 개체는 알고리즘에 대한 함수 인수로 사용할 수 있는 개체입니다. 함수를 알고리즘에 전달하는 방법을 제공하여 해당 동작을 사용자 정의할 수 있습니다.
  5. 어댑터: 어댑터는 STL에서 다른 구성 요소의 동작을 수정하는 구성 요소입니다. 예를 들어 reverse_iterator 어댑터를 사용하면 컨테이너의 요소 순서를 반대로 바꿀 수 있습니다.

STL을 사용하면 코드를 단순화하고 오류 가능성을 줄이며 프로그램 성능을 향상시킬 수 있습니다.



STL에는 4가지 구성 요소가 있습니다.

    알고리즘 컨테이너 펑터 반복자

1. 알고리즘

헤더 알고리즘은 다양한 요소에 사용되도록 특별히 설계된 기능 모음을 정의합니다. 이는 컨테이너에 작용하고 컨테이너 내용에 대한 다양한 작업 수단을 제공합니다.

  • 연산
    • 정렬
    • 수색
    • 중요한 STL 알고리즘
    • 유용한 배열 알고리즘
    • 파티션 작업
  • 숫자
    • 발레레이 클래스

2. 컨테이너

컨테이너 또는 컨테이너 클래스는 개체와 데이터를 저장합니다. 총 7개의 표준 일류 컨테이너 클래스와 3개의 컨테이너 어댑터 클래스, 그리고 이러한 컨테이너 또는 컨테이너 어댑터에 대한 액세스를 제공하는 7개의 헤더 파일만 있습니다.



  • 시퀀스 컨테이너: 순차적 방식으로 액세스할 수 있는 데이터 구조를 구현합니다.
    • 벡터
    • 목록
    • 무엇에 대해
    • 배열
    • forward_list(C++11에서 도입됨)
  • 컨테이너 어댑터: 순차 컨테이너에 대해 다른 인터페이스를 제공합니다.
  • 연관 컨테이너: 빠르게 검색할 수 있는 정렬된 데이터 구조를 구현합니다(복잡도 O(log n)).
  • 정렬되지 않은 연관 컨테이너: 빠르게 검색할 수 있는 정렬되지 않은 데이터 구조를 구현합니다.
    • unordered_set(C++11에서 도입됨)
    • unordered_multiset(C++11에서 도입됨)
    • 순서가 없는_지도 (C++11에서 도입됨)
    • unordered_multimap(C++11에서 도입됨)

적응형 컨테이너 및 순서가 지정되지 않은 컨테이너의 흐름도 시퀀스 컨테이너 및 주문 컨테이너의 흐름도

3. 펑터

STL에는 함수 호출 연산자를 오버로드하는 클래스가 포함되어 있습니다. 이러한 클래스의 인스턴스를 함수 객체 또는 펑터라고 합니다. Functor를 사용하면 전달되는 매개변수의 도움으로 관련 기능의 작업을 사용자 정의할 수 있습니다. 꼭 읽어야 할 – 펑터

4. 반복자

이름에서 알 수 있듯이 반복자는 일련의 값에 대해 작업하는 데 사용됩니다. 이는 STL의 일반성을 허용하는 주요 기능입니다. 꼭 읽어야 할반복자

유틸리티 라이브러리

헤더에 정의되어 있습니다. 꼭 읽어야 할C++ STL에서 페어링

자세한 내용은 다음을 참조하세요. STL에 관한 최근 기사!

C++ 표준 템플릿 라이브러리(STL)의 장점:

  1. 재사용성: STL의 주요 장점 중 하나는 다양한 데이터 유형에 적용할 수 있는 일반적이고 재사용 가능한 코드를 작성하는 방법을 제공한다는 것입니다. 이를 통해 더욱 효율적이고 유지 관리 가능한 코드를 만들 수 있습니다.
  2. 효율적인 알고리즘: STL의 많은 알고리즘과 데이터 구조는 최적화된 알고리즘을 사용하여 구현되므로 사용자 정의 코드에 비해 실행 시간이 더 빨라질 수 있습니다.
  3. 향상된 코드 가독성: STL은 일관되고 잘 문서화된 데이터 작업 방법을 제공하므로 코드를 더 쉽게 이해하고 유지 관리할 수 있습니다.
  4. 대규모 사용자 커뮤니티: STL은 널리 사용됩니다. 이는 튜토리얼 및 포럼과 같은 지원 및 리소스를 제공할 수 있는 대규모 개발자 커뮤니티가 있음을 의미합니다.

C++ 표준 템플릿 라이브러리(STL)의 단점:

  1. 학습 곡선: STL은 복잡한 구문과 반복자 및 함수 개체와 같은 고급 기능의 사용으로 인해 특히 초보자에게 배우기 어려울 수 있습니다.
  2. 제어 부족: STL을 사용할 때 라이브러리에서 제공하는 구현에 의존해야 하므로 코드의 특정 측면에 대한 제어가 제한될 수 있습니다.
  3. 성능: 경우에 따라 STL을 사용하면 특히 소량의 데이터를 처리할 때 사용자 정의 코드에 비해 실행 시간이 느려질 수 있습니다.