English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ STL 교육

STL은 'Standard Template Library'의 약자로, 중국어로 '표준 템플릿 라이브러리'로 번역됩니다. STL은 C++ 표준 라이브러리의 일부로, 별도로 설치하지 않아도 됩니다.

이전 장에서는 C++ 템플릿 개념.++ STL(표준 템플릿 라이브러리)는 강력한 C++ 템플릿 클래스는 일반 템플릿 클래스와 함수를 제공하며, 벡터, 링크드 리스트, 큐, 스택과 같은 다양한 인기와 일반적인 알고리즘과 데이터 구조를 구현할 수 있습니다.

C++ 템플릿을 잘 지원하며, STL 템플릿을 사용하여 일반적인 데이터 구조와 알고리즘을 모두 구현했으며, 데이터 구조와 알고리즘을 분리했습니다. 예를 들어, vector의 기본은 시퀀스 테이블(배열)이며, list 의 기본은 양방향 링크드 리스트이며, deque의 기본은 순환 큐이며, set의 기본은 레드-블랙 트리이며, hash_set의 기본은 해시 테이블입니다.

C++ 표준 템플릿 라이브러리의 핵심 구성 요소는 다음과 같습니다:

구성 요소설명
컨테이너(Containers)컨테이너는 특정 유형의 객체 집합을 관리하는 데 사용됩니다. C++++ 다양한 타입의 컨테이너를 제공합니다. 예를 들어 deque, list, vector, map 등.
알고리즘(Algorithms)알고리즘은 컨테이너에 작용합니다. 그들은 컨테이너 내용에 대해 초기화, 정렬, 검색 및 변환 등 다양한 작업을 수행하는 방법을 제공합니다.
이터레이터(Iterators)이터레이터는 요소 집합의 요소를 순회하는 데 사용됩니다. 이 요소 집합은 컨테이너나 컨테이너의 일부일 수 있습니다.

이 세 구성 요소는 모두 풍부한 предопределенные функции를 가지고 있으며, 복잡한 작업을 간단하게 처리하는 데 도움을 줍니다.

아래 프로그램은向量 컨테이너(한 C++ 컨테이너)를 보여줍니다.++ 표준 템플릿 라이브러리와 매우 유사하며, 배열과 유사하지만, 필요에 따라 크기를 자동으로 처리할 수 있는向量가 있습니다:

#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
   // int를 저장하는 저장소를 생성합니다
   vector<int> vec; 
   int i;
 
   // vec의 원래 크기를 표시합니다
   cout << "vec의 원래 크기 = " << vec.size() << endl;
 
   // 추가 6 개의 값을 저장소에 추가합니다
   for(i = 0; i < 6; i++}
      vec.push_back(i+1);
   }
 
   // vec 확장 후의 크기를 표시합니다
   cout << "vec 확장 후의 크기 = " << vec.size() << endl;
 
   // 저장소의 값을 접근합니다 5 개의 값
   for(i = 0; i < 5; i++}
      cout << " vec[" << i << "]의 값 = " << vec[i] << endl;
   }
 
   // 이터레이터 iterator를 사용하여 값을 접근합니다
   vector<int>::iterator v = vec.begin();
   while( v != vec.end()) {
      cout << "v의 값 = " << *v << endl;
      v++;
   }
 
   return 0;
}

위 코드가 컴파일 및 실행될 때, 다음과 같은 결과가 생성됩니다:

vec의 원래 크기 = 0
vec 확장 후의 크기 = 6
 vec[0]의 값 = 1
 vec[1]의 값 = 2
 vec[2]의 값 = 3
 vec[3]의 값 = 4
 vec[4]의 값 = 5
 vec[5]의 값 = 6
v의 값 = 1
v의 값 = 2
v의 값 = 3
v의 값 = 4
v의 값 = 5
v의 값 = 6

위 예제에서 사용된 다양한 함수에 대해 몇 가지 주의할 점이 있습니다:

  • push_back( ) 멤버 함수는 벡터의 끝에 값을 삽입하며 필요하다면 벡터의 크기를 확장합니다。

  • size( ) 함수는 벡터의 크기를 표시합니다。

  • begin( ) 함수는 벡터의 시작에 대한 이터레이터를 반환합니다。

  • end( ) 함수는 벡터의 끝에 대한 이터레이터를 반환합니다。