#18 [c++] 제네릭 클래스, STL의 개요

정상준·2022년 11월 18일
0

c++

목록 보기
14/25

📝 제네릭 클래스

#include <iostream>

using namespace std;

/*
2,3
*/

template <class T>
class MyStack {
private:
	int tos;
	T data[100];
public:
	MyStack();
	void push(T element);
	T pop();
};

template<class T>
MyStack<T>::MyStack() {
	tos = -1;
}

template<class T>
void MyStack<T>::push(T element) {
	if (tos == 99) {
		cout << "stack full";
		return;
	}
	tos++;
	data[tos] = element;
}

template<class T>
T MyStack<T>::pop() {
	T retData;
	if (tos == -1) {
		cout << "stack empty";
		return 0;
	}
	else {
		retData = data[tos--];
		return retData;
	}
}

class Point {
	int x, y;
public:
	Point(int x = 0, int y = 0) {
		this->x = x, this->y = y;
	}
	void show() { cout << x << ',' << y << endl; }
};

int main() {
	MyStack<Point> pointStack;
	Point a(2, 3), b;
	pointStack.push(a);
	b = pointStack.pop();
	b.show();
}

📝 C++ 표준 템플릿 라이브러리

  • STL(Standard Template Library)

    • 표준 템플릿 라이브러리
      • C++ 표준 라이브러리 중 하나
    • 많은 제네릭 클래스와 제네릭 함수 포함
      • 개발자는 이들을 이용하여 쉽게 응용 프로그램 작성
  • STL의 구성

    • 컨테이너 - 템플릿 클래스
      • 데이터를 담아두는 자료 구조를 표현한 클래스
      • 리스트, 큐, 스택, 맵, 셋, 벡터
    • iterator(반복자) - 컨테이너 원소에 대한 포인터
      • 컨테이너의 원소들을 순회하면서 접근하기 위해 만들어진 컨테이너 원소에 대한 포인터
    • 알고리즘 - 템플릿 함수
      • 컨테이너 원소에 대한 복사, 검색, 삭제, 정렬 등의 기능을 구현한 템플릿 함수
      • 컨테이너의 멤버 함수 아님
  • 반족자의 종류

    • 입력 반복자
    • 출력 반복자
    • 순방향 반복자
    • 양방향 반복자
    • 임의 접근 방복자
profile
안드로이드개발자

0개의 댓글