C++ template
템플릿
쳄플릿이란 자료형을 나중에 지정 될 수 있도록 만들어주는 문법이다.
#include <iostream>
using std::cout;
using std::endl;
template <class T> T Max(T i, T j)
{
return i>j ?i:j;
}
int main(){
cout<< "Max값은=" << Max(1,2)<<endl;
cout<< "Max값은=" << Max(7.5,3.6)<<endl;
cout<< "Max값은=" << Max('A','B');
return 0;
}
- 입력된 매개변수에 따라 자료형이 정해지도록 할 수 있다.
- class라고 쓴 자리 대신 typename을 작성해도 작동한다
#include <iostream>
using std::cout;
using std::endl;
template <typename T, typename T2>
class CCC1{
T x;
T2 y;
public:
CCC1(T xx, T2 yy) {x=xx;y=yy;}
void Print(){ cout<<x<<','<<y<<endl;}
};
int main(){
CCC1<int, int> c1(10,20);
CCC1<double, double> c2(3.5,5.5);
CCC1<char, const char *> c3('I', "Love");
c1.Print();
c2.Print();
c3.Print();
return 0;
}
STL
C++ 표준 라이브러리 일부분으로 자료구조 알고리즘을 미리 만들어 둔 라이브러리다.
컨테이너
- 객체를 저장하는 객체나 클래스
- 시퀀스 컨테이너
- vector, deque, list
- 연관 컨테이너
- set, multiset, map, multimap
- 연속 메모리 기반 컨테이너
- 데이터 여러개를 하나의 메모리 단위에 저장
- 배열 기반
- vector, string, deque
- 노드 기반 컨테이너
- 데이터 하나를 하나의 메모리 단위에 저장
- list, set, multiset, map, multimap
반복자
- 컨테이너에 저장된 요소를 순화하고 접근하는 객체나 클래스
알고리즘
- 데이터 처리 함수
- find, sort, search
함수 객체
- 함수처럼 동작하는 객체
#include <iostream>
#include <vector>
using namespace std;
int main( )
{
vector <int> x;
x.push_back(1);
x.push_back(2);
for(int i = 0 ; i < x.size() ; i++)
cout << x[i] << endl;
return 0;
}
예외처리
컴파일 에러 외, 런타임 에러를 처리하기 위한 C++의 방법이다
사용법
관련 키워드
키워드 | 의미 |
---|---|
try | 예외를 감시하는 블록으로, main마저 포함할 수 있다 |
throw | 예외가 발생하면 알리고 내용을 담아 던짐 |
catch | 예외를 받아 처리하는 블록 |
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
void Div(double ja, double mo)
{
try{
if (mo == 0) throw mo;
cout<<"결과:"<<ja/mo<<endl;
}
catch(double) {
cout << "cant't div with 0";
}
}
int main()
{
double x, y;
cout <<"분자를 입력하세요=";
cin>>x;
cout <<"분모를 입력하세요=";
cin>>y;
Div(x, y);
return 0;
}