C++ STL 튜토리얼
이전 장에서는 C++ 템플릿의 개념을 배웠습니다. C++ STL(표준 템플릿 라이브러리)은 공통 템플릿 클래스와 함수를 제공하는 강력한 C++ 템플릿 클래스 세트입니다. 이러한 템플릿 클래스와 함수는 벡터, 연결 목록 및 기타 널리 사용되는 다양한 알고리즘과 데이터 구조를 구현할 수 있습니다. 대기열., 스택.
C++ 표준 템플릿 라이브러리의 핵심에는 다음 세 가지 구성 요소가 포함되어 있습니다.
Component | Description |
---|---|
Containers(컨테이너) | 컨테이너는 특정 유형의 개체 모음을 관리하는 데 사용됩니다. C++에서는 deque, list, vector, map 등과 같은 다양한 유형의 컨테이너를 제공합니다. |
Algorithms | 알고리즘은 컨테이너에 적용됩니다. 컨테이너 내용의 초기화, 정렬, 검색 및 변환을 포함하여 다양한 작업을 수행하는 방법을 제공합니다. |
Iterators | Iterator는 객체 컬렉션의 요소를 순회하는 데 사용됩니다. 이러한 컬렉션은 컨테이너이거나 컨테이너의 하위 집합일 수 있습니다. |
이 세 가지 구성 요소에는 모두 사전 정의된 풍부한 기능이 포함되어 있어 복잡한 작업을 간단한 방법으로 처리하는 데 도움이 됩니다.
다음 프로그램은 배열과 매우 유사한 벡터 컨테이너(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( ) 함수는 벡터의 끝을 가리키는 반복자를 반환합니다.