새소식

💻 Programming (프로그래밍)/C++

[C++] STL (Standard Template Library)

  • -

STL 이란

잘 만들어진 소스코드를 재사용 하는 코드 라이브러리 입니다.

 

STL의 세가지 핵심요인은 클래스인 컨테이너(Container), 함수의 알고리즘(Algorithm)

이 둘을 연결시켜주는 반복자(Iterator)가 있습니다.


컨테이너(Container)

기본 자료형과 유저가 정의한 자료형을 담는 자료구조입니다.

 

vector, deque, list, set, multiset, map, multimap, pair 등등

 

https://www.cplusplus.com/reference/stl/

 

Containers - C++ Reference

 

www.cplusplus.com


알고리즘(Algorithm)

검색, 정렬, 원소 수정, 개수 세기 등등을 쉽게 만들어주는 기능적 라이브러리입니다.

 

sorting, search, (non-)modifying, numeric 등등

 

https://www.cplusplus.com/reference/algorithm/?kw=algorithm 

 

<algorithm> - C++ Reference

library <algorithm> Standard Template Library: Algorithms The header defines a collection of functions especially designed to be used on ranges of elements. A range is any sequence of objects that can be accessed through iterators or pointers, such as an a

www.cplusplus.com

 


반복자(Iterator)

컨테이너의 저장된 원소를 순회하며 접근하는 방법을 제공합니다.

또한 사용자가 컨테이너와 알고리즘을 하나의 방법으로 접근하게 도와줍니다.

 

https://www.cplusplus.com/reference/iterator/

 

<iterator> - C++ Reference

Supports inequality comparisons (<, >, <= and >=) between iteratorsa < b a > b a <= b a >= b

www.cplusplus.com

 

각 컨테이너 혹은 변수타입 뒤에 ::iterator 또는 ::const_iterator 을 붙여주면 사용할 수 있습니다.

 

 

#include <iostream>
#include <vector>
using namespace std;

int main()
{
	vector<int> vec1;
    vec1.push_back(10);
    vec1.push_back(20);
    vec1.push_back(30);
    
    vector<int>::iterator it;
    for(it = vec1.begin() ; it != vec1.end(); it++
    	cout << *it << endl;
}

vector<int> 에 대한 반복자로 it를 선언하여서, 순환을 쉽게하는 모습입니다.


STL은 제네릭(Generic) 프로그래밍을 추구합니다!

 

즉 제네릭이라는 것은 데이터 형식에 의존하지 않고, 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어서 

재사용성!! 에 초점을 두는 프로그래밍 방식입니다.

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.