C++ STL 튜토리얼


이전 장에서는 C++ 템플릿의 개념을 배웠습니다. C++ STL(표준 템플릿 라이브러리)은 공통 템플릿 클래스와 함수를 제공하는 강력한 C++ 템플릿 클래스 세트입니다. 이러한 템플릿 클래스와 함수는 벡터, 연결 목록 및 기타 널리 사용되는 다양한 알고리즘과 데이터 구조를 구현할 수 있습니다. 대기열., 스택.

C++ 표준 템플릿 라이브러리의 핵심에는 다음 세 가지 구성 요소가 포함되어 있습니다.

Component Description
Containers(컨테이너) 컨테이너는 특정 유형의 개체 모음을 관리하는 데 사용됩니다. C++에서는 deque, list, vector, map 등과 같은 다양한 유형의 컨테이너를 제공합니다.
Algorithms알고리즘은 컨테이너에 적용됩니다. 컨테이너 내용의 초기화, 정렬, 검색 및 변환을 포함하여 다양한 작업을 수행하는 방법을 제공합니다.
IteratorsIterator는 객체 컬렉션의 요소를 순회하는 데 사용됩니다. 이러한 컬렉션은 컨테이너이거나 컨테이너의 하위 집합일 수 있습니다.

이 세 가지 구성 요소에는 모두 사전 정의된 풍부한 기능이 포함되어 있어 복잡한 작업을 간단한 방법으로 처리하는 데 도움이 됩니다.

다음 프로그램은 배열과 매우 유사한 벡터 컨테이너(C++ 표준 템플릿)를 보여줍니다. 유일한 차이점은 벡터가 크기를 확장해야 할 때 자체 저장 요구 사항을 자동으로 처리한다는 것입니다. 위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
   // 创建一个向量存储 int
   vector<int> vec; 
   int i;

   // 显示 vec 的原始大小
   cout << "vector size = " << vec.size() << endl;

   // 推入 5 个值到向量中
   for(i = 0; i < 5; i++){
      vec.push_back(i);
   }

   // 显示 vec 扩展后的大小
   cout << "extended vector size = " << vec.size() << endl;

   // 访问向量中的 5 个值
   for(i = 0; i < 5; i++){
      cout << "value of vec [" << i << "] = " << vec[i] << endl;
   }

   // 使用迭代器 iterator 访问值
   vector<int>::iterator v = vec.begin();
   while( v != vec.end()) {
      cout << "value of v = " << *v << endl;
      v++;
   }

   return 0;
}

위 예제에서 사용된 다양한 함수에 대해 몇 가지 참고할 사항이 있습니다.

    push_back( ) 멤버 함수는 끝에 값을 삽입합니다. 벡터의 크기는 필요한 경우 확장됩니다.
  • size( ) 함수는 벡터의 크기를 표시합니다.
  • begin( ) 함수는 벡터의 시작 부분을 가리키는 반복자를 반환합니다.
  • end( ) 함수는 벡터의 끝을 가리키는 반복자를 반환합니다.