C++ - STL(Standard Template Libary)

컴퓨터/C++

728x90
반응형

서론

C언어를 공부하고,자료구조를 공부했다면은 간단한 자료구조를 구현하고 사용해보았을 것이다.

하지만 필요할때마다 원하는 자료형을 가진 자료형을 만드는 것은 엄청나게 많은 시간을 소비하게 됩니다.

C++에서는 STL이라는 표준 템플릿 라이브러리를 통해 손쉽게 다양한 자료구조들을 사용할 수 있습니다.

본문에서는 STL의 전반적인 개념과 구성 요소에 대해 알아보겠습니다.

 

STL(Standard Template Libray)

STL 라이브러리 안에는 몇가지 구성요소를 가지고 만들어 졌습니다.

  • Container(컨테이너)
    • 템플릿을 이용하여 모든 자료형을 담을 수 있는 객체
    • 즉, 데이터를 담을수 있는 공간
  • Iterator(반복자)
    • 컨테이너에 들어있는 원소(값)에 접근하기 위한 기능들의 모음
  • Algorithm(알고리즘)
    • 컨테이너안의 데이터들을 정렬,검색등의 다양한 연산을 하기위한 기능
    • 컨테이너 안에서 반복자와 함께 사용하게 된다.

대표적인 컨테이너

컨테이너는 여러 자료형의 데이터를 자유롭게 담을 수 있는 객체 입니다. 

흔히 말하는 다양한 자료구조 개념을 컨테이너의 형태로 구현한 것이죠. 

STL에서 제공하는 컨테이너 중 몇가지를 알아보도록 하겠습니다.

  • pair - 2개의 묶음으로 이루어진 컨테이너 튜플과 유사
  • vector - 동적 배열의 능력을 가진 컨테이너
  • queue - queue 자료구조형의 컨테이너
  • stack - stack 자료구조형의 컨테이너

반복자(iterator)

C++에서 컨테이너객체를 생성했다면 반복자를 통해 생성된 객체의 원소(값)들을 추가,제거,선택등의 다양한 기능을 할수 있습니다. 이러한 기능들을 반복자 라고 합니다.

 

알고리즘(Algorithm)

흔히 말하는 알고리즘의 개념적 요소들을 구현한 것입니다. 이 녀석을 사용해서 구현되어 있는 알고리즘을 손쉽게 사용할 수 있습니다.

 

맛보기

앞으로 하나씩 STL 컨테이너들을 사용해 볼 것입니다.

오늘은 예제소스를 통해 간단하게 위의 구성요소들을 사용해 보겠습니다.

#include <iostream>
// STL vector를 사용
#include <vector>
// STL algorithm을 사용
#include <algorithm>
using namespace std;

int main() {

	vector<int> vec1; // int 타입을 담을 수 있는 vector 자료 구조
	vector<string> vec2; // String 타입을 담을 수 있는 vector 자료구조

	//값 추가하기
	vec1.push_back(5);
	vec1.push_back(2);
	vec1.push_back(7);
	vec1.push_back(10);

	//값 출력하기 (이터레이터 사용)
	for (vector<int>::iterator itr = vec1.begin(); itr != vec1.end(); itr++) {
		printf("%d \n", *itr);
	}

	//값 제거하기 가장 마지막
	vec1.pop_back();

	//알고리즘 사용하기
	sort(vec1.begin(), vec1.end());
	//값 출력하기 (이터레이터 사용)
	for (vector<int>::iterator itr = vec1.begin(); itr != vec1.end(); itr++) {
		printf("%d \n", *itr);
	}
	return 0;
}

 

728x90
반응형

'컴퓨터 > C++' 카테고리의 다른 글

C++ - 배열 vector와 2차원 vector  (0) 2022.03.29
C++ - STL vector 클래스 (손쉬운 동적배열)  (0) 2022.03.21
C++ - STL라이브러리 piar  (0) 2022.03.17

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :