반응형

[ 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;
}

 

반응형
Posted by 명문코딩컴퓨터
,