C ++의 STL : 알아야 할 모든 것

이 기사는 C ++의 STL에 대한 상세하고 포괄적 인 지식을 제공하고 다양한 컨테이너에 대한 아이디어도 제공합니다.

표준 템플릿 라이브러리 (STL)는 목록, 스택, 배열 등과 같은 일반적인 프로그래밍 데이터 구조 및 함수를 제공하는 C ++ 템플릿 클래스 집합입니다.이 C ++ 문서에서는 다음 포인터에 대해 설명합니다.

C ++의 STL에 대한이 기사로 이동





C ++ 템플릿

C ++는 함수와 클래스가 제네릭 유형으로 작동 할 수 있도록하는 템플릿 기능을 제공합니다. 이를 통해 함수 또는 클래스를 재사용 할 수 있으며 각각에 대해 다시 작성하지 않고도 다양한 데이터 유형에 대해 작업 할 수 있습니다.

C ++의 STL에 대한이 기사로 이동



일반 기능 및 STL

여러 번 프로그래밍하는 동안 동일한 작업을 수행하지만 다른 데이터 유형으로 작동하는 함수를 만들어야합니다. 따라서이 문제를 극복하기 위해 C ++는 템플릿 매개 변수를 사용하여 서로 다른 데이터 유형으로 작동 할 수있는 많은 함수 대신 단일 일반 함수를 생성하는 기능을 제공합니다. 이러한 Genric 클래스와 함수의 모음을 표준 템플릿 라이브러리 (STL)라고합니다.

이제 표준 C ++ 라이브러리의 일부인 STL의 구성 요소는 std 네임 스페이스에 정의되어 있습니다. 따라서 using namespace 지시문을 사용하여 프로그램으로 가져와야합니다.

통사론:



네임 스페이스 std 사용

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

  • 컨테이너

  • 알고리즘

  • 반복자

이 세 가지 구성 요소는 다양한 프로그래밍 솔루션을 지원하기 위해 서로 시너지 효과를 발휘합니다. 알고리즘은 반복기를 사용하여 컨테이너에 저장된 작업을 수행합니다.

컨테이너는 메모리에 데이터를 체계적으로 저장하는 개체입니다. STL의 컨테이너는 템플릿 클래스에 의해 구현되므로 다양한 유형의 데이터를 보유하도록 쉽게 수정하고 사용자 지정할 수 있습니다.

컨테이너에 포함 된 데이터를 처리하는 데 사용되는 절차는 알고리즘으로 정의됩니다. STL에는 초기화, 검색, 복사, 정렬 및 병합, 복사, 정렬 및 병합과 같은 작업을 지원하는 다양한 종류의 알고리즘이 포함되어 있습니다. 알고리즘은 템플릿 함수로 구현됩니다.

반복기는 컨테이너의 요소를 가리키는 개체로 정의 할 수 있습니다. 반복기를 사용하여 컨테이너의 내용을 이동할 수 있습니다. 반복자는 포인터처럼 처리됩니다. 우리는 그것들을 증가 시키거나 감소시킬 수 있습니다. 반복기는 알고리즘을 컨테이너와 연결하고 컨테이너에 저장된 데이터를 조작하는 데 중요한 역할을합니다.

Container-STL-in-C++

C ++의 STL에 대한이 기사로 이동

컨테이너

STL은 세 가지 범주로 그룹화 된 10 개의 컨테이너를 정의합니다.

컨테이너

기술

헤더 파일

반복자

벡터

동적 배열로 정의 할 수 있습니다. 모든 요소에 직접 액세스 할 수 있습니다.

랜덤 액세스

명부

양방향 선형 목록입니다. 어디서나 삽입 및 삭제가 가능합니다.

양방향

양단 대기열입니다. 양쪽 끝에서 삽입 및 삭제를 허용합니다. 모든 요소에 대한 직접 액세스를 허용합니다.

랜덤 액세스

세트

고유 한 세트를 저장하기위한 연관 컨테이너입니다. 빠른 조회를 허용합니다.

양방향

다중 세트

고유하지 않은 세트를 저장하기위한 연관 컨테이너입니다.

양방향

지도

고유 한 키 / 값 쌍을 저장하기위한 연관 컨테이너입니다. 각 키는 하나의 값에만 연결됩니다.

양방향

멀티 맵

하나의 키가 둘 이상의 값 (일대 다 매핑)과 연관 될 수있는 키 / 값을 저장하기위한 연관 컨테이너입니다. 키 기반 조회를 허용합니다.

양방향

스택

표준 스택은 후입 선출 (LIFO)을 따릅니다.

반복자 없음

표준 대기열은 선입 선출 (FIFO)을 따릅니다.

반복자 없음

우선 대기열

자바 반복기를 사용하는 방법

첫 번째 요소는 항상 가장 높은 우선 순위 요소입니다.

반복자 없음

시퀀스 컨테이너

시퀀스 컨테이너는 요소를 선형 순서로 저장합니다. 모든 요소는 선을 따른 위치에 따라 서로 관련됩니다. 그들은 요소의 삽입을 허용하고 그들 모두에 대한 여러 작업을 지원합니다.

STL은 세 가지 유형의 시퀀스 요소를 제공합니다.

  • 벡터
  • 명부

연관 컨테이너 :

키를 사용하여 요소에 대한 직접 액세스를 지원할 수 있도록 설계되었습니다. 순차적이지 않습니다. 네 가지 유형이 있습니다.

연관 컨테이너 :

  1. 세트
  2. 멀티 세트
  3. 지도
  4. 멀티 맵

위의 모든 컨테이너는 데이터를 트리라는 구조로 저장하여 빠르게

순차와 달리 검색, 삭제 및 삽입. 컨테이너 세트 또는 다중 세트는 다양한 항목을 저장하고 값을 키로 사용하여 조작하는 작업을 제공 할 수 있습니다.

그리고 맵 또는 멀티 맵은 항목을 쌍으로 저장하는 데 사용됩니다.

가치라고 불렀습니다.

파생 컨테이너 :

STL은 스택, 큐 및 priority_queue라는 세 가지 파생 컨테이너를 제공합니다. 컨테이너 어댑터라고도합니다.

파생 된 컨테이너에는 세 가지 유형이 있습니다.

1. 스택

2. 큐

3.Priority_quue

스택, 대기열 및 우선 순위 대기열은 다른 시퀀스 컨테이너에서 쉽게 생성 할 수 있습니다. 파생 컨테이너는 반복기를 지원하지 않으므로 데이터 조작에 사용할 수 없습니다. 그러나 삭제 및 삽입 작업을 구현하기 위해 두 개의 멤버 함수 pop () 및 push ()를 지원합니다.

C ++의 STL에 대한이 기사로 이동

알고리즘

알고리즘은 콘텐츠를 처리하기 위해 다양한 컨테이너에서 일반적으로 사용할 수있는 함수입니다. 각 컨테이너는 기본 작업을위한 기능을 제공하지만 STL은 더 확장되거나 복잡한 작업을 지원하기 위해 60 개 이상의 표준 알고리즘을 제공합니다. 또한 표준 알고리즘을 사용하면 두 가지 유형의 컨테이너를 동시에 사용할 수 있습니다.

STL 알고리즘은 재사용 성의 철학을 강화합니다. 이러한 알고리즘을 사용하여 프로그래머는 많은 시간과 노력을 절약 할 수 있습니다. STL 알고리즘에 액세스하려면 프로그램에 포함해야합니다.

STL 알고리즘은 수행하는 작업의 특성에 따라 다음과 같이 분류 할 수 있습니다.

  • 비변이 알고리즘

  • 돌연변이 알고리즘

  • 알고리즘 정렬

  • 알고리즘 설정

  • 관계형 알고리즘

C ++의 STL에 대한이 기사로 이동

반복자 :

반복기는 포인터처럼 작동하며 컨테이너의 요소에 액세스하는 데 사용됩니다. 반복기를 사용하여 컨테이너의 내용을 이동합니다. 반복자는 포인터처럼 처리됩니다. 요구 사항에 따라 증가 또는 감소시킬 수 있습니다. 반복기는 컨테이너를 알고리즘과 연결하고 컨테이너에 저장된 데이터를 조작하는 데 중요한 역할을합니다. 그들은 종종 한 요소에서 다른 요소로 전달하는 데 사용되며,이 프로세스를 컨테이너를 통한 반복이라고합니다.

반복기에는 5 가지 유형이 있습니다.

1. 입력

2. 출력

3. 포워드

4. 양방향

5. 무작위

반복자

접근 방법

이동 방향

I / O 기능

입력

선의

앞으로 만

읽기 전용

저장할 수 없습니다

산출

선의

앞으로 만

쓰기 만

저장할 수 없습니다

앞으로

선의

앞으로 만

읽기 / 쓰기

저장 가능

양방향

선의

앞으로 및 뒤로

읽기 / 쓰기

저장 가능

랜덤

랜덤

앞으로 및 뒤로

읽기 / 쓰기

저장 가능

다른 유형의 반복자는 다른 유형의 컨테이너와 함께 사용해야합니다.

시퀀스 및 연관 컨테이너는 반복기를 통해 이동할 수 있습니다. 각 유형의 반복기는 특정 기능을 수행하는 데 사용됩니다. 입력 및 출력 반복기는 최소한의 기능을 지원합니다. 컨테이너를 통과하는 데만 사용할 수 있습니다. 정방향 반복기는 입력 및 출력 반복기의 모든 작업을 지원하고 컨테이너에서 위치를 유지합니다. 양방향 반복기는 모든 정방향 반복기 작업을 지원하면서 컨테이너에서 뒤로 이동하는 기능을 제공합니다.

따라서 우리는 'C ++의 STL'에 대한이 기사의 끝까지 왔습니다. 자세한 내용은 다음을 확인하십시오. 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 제공합니다. Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

질문이 있으십니까? 이 블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.