[ dev c++ 다운로드 ]
https://sourceforge.net/projects/orwelldevcpp/?source=typ_redirect
STL은 표준 C++라이브러리의 일부분으로 Standard Template Library의 약자입니다. STL은 프로그램에 필요한 자료구조와 알고리즘을 템플릿으로 제공하는 라이브러리 입니다. 또한, 자료구조와 알고리즘은 서로 반복자라는 구성 요소를 통해 연결합니다.
다음은 STL의 구성요소입니다.
- 컨테이너(Container) : 객체를 저장하는 객체로 컬렉션 혹은 자료구조라고도 합니다.
- 반복자(Iterator) : 포인터와 비슷한 개념으로 컨테이너의 원소를 가리키고, 가리키는 원소에 접근하여 다음 원소를 가리키게 하는 기능을 합니다.
- 알고리즘(Algorithm) : 정렬, 삭제, 검색, 연산 등을 해결하는 일반화된 방법을 제공하는 함수 템플릿입니다.
- 함수객체(Function Object) : 함수처럼 동작하는 객체로 operator() 연산자를 오버로딩한 객체입니다. 컨테이너와 알고리즘 등에 클라이언트 정책을 반영하게 합니다.
- 어댑터(Adapter) : 구성 요소의 인터페이스를 변경해 새로운 인터페이스를 갖눈 구성요소로 변경합니다(새로운 구성 요소처럼 보입니다.)
- 할당기(Allocator) : 컨테이너의 메모리 할당 정책을 캡슐화한 클래스 객체로 모든 컨테이너는 자신만의 기본 할당기를 가지고 있습니다. 프로그램 대부분은 STL에서 제고하는 기본 할당기만으로 충분하므로 자세히 다루지 않습니다.
◈ STL의 세가지 특징은 효율성과 일반화 프로그램(재사용성), 확장성입니다. STL은 이 세 특징에 중점을 두고 개발된 라이브러리입니다. 그래서 STL 알고리즘은 너무나도 일반적입니다. 특정한 자료구조와 형식에 종속적이지 않습니다. 효율성도 다른 라이브러리에 뒤지지 않을 뿐만 아니라 사용자가 작성한 구성 요소와도 잘 동작하며, 확장성도 뛰어납니다. |
♣ pair 클래스란
- 두 객체를 하나의 객체로 취급 할 수 있게 묶어주는 클래스입니다.
- STL에서 데이터 "쌍"을 표현할때 사용합니다.
- #include <utlity> 헤더에 존재합니다.
- pair 클래스의 주요 멤버는 객체 쌍을 저장하는 first와 second 입니다.
- STL의 모든 쌍을 이루는 객체는 pair객체를 사용합니다. 대표적으로 map 컨테이너의 key, value의 쌍을 표현할 때나 구간의 시작과 끝을 표현할 때 사용됩니다.
- pair < [type1], [type2] > p p.first : p의 첫번째 인자를 반환해 줍니다. p.second : p의 두번째 인자를 반환해 줍니다. - make_pair(변수1, 변수2) : 변수1과 변수2가 들어간 pair를 만들어줍니다. - operator로 (==, !=, < , >, <=, >=)가 정의되어서 사용이 가능합니다. |
[ pair 예문 ]
#include <iostream>
#include <queue>
using namespace std;
int main()
{
queue<pair<int, int> > q;
int x, y;
char z;
q.push(make_pair(2, 10));
q.push(make_pair(3, 11));
q.push(make_pair(4, 12));
q.push(make_pair(5, 13));
q.push(make_pair(6, 14));
while(!q.empty())
{
x=q.front().first;
y=q.front().second;
cout << x << ' ' << y << '\n';
q.pop();
}
cout << "================================" << '\n';
typedef pair <int, char> ci;
queue<pair<int, ci> > Q;
Q.push(make_pair(1, ci(10, 'A')));
Q.push(make_pair(2, ci(20, 'B')));
Q.push(make_pair(3, ci(30, 'C')));
Q.push(make_pair(4, ci(40, 'D')));
Q.push(make_pair(5, ci(50, 'E')));
while(!Q.empty())
{
x=Q.front().first;
y=Q.front().second.first;
z=Q.front().second.second;
cout << x << ' ' << y << ' ' << z << '\n';
Q.pop();
}
return 0;
}
'C++ STL' 카테고리의 다른 글
6. C++ STL [ vector 2일차 ] vector 컨테이너 (0) | 2020.04.01 |
---|---|
5. C++ queue 컨테이너 + pair() (0) | 2020.04.01 |
4. C++ stack 컨테이너 + pair() - 1문제 (0) | 2020.04.01 |
3. C++ stack 컨테이너 (0) | 2020.04.01 |
2. C++ vector 정렬 - 11문제 (0) | 2020.03.26 |