본문 바로가기

클래스 템플릿 템플릿들은 함수가 아니기 때문에 개별적으로 컴파일할 수 없다. 템플릿들은 특별한 구체화 요구들과 함께 결합하여 사용해야 한다. 가장 간단한 방법은, 모든 템플릿 관련 정보를 헤더 파일에 집어 놓고, 그 템플릿들을 사용하는 파일에 그 헤더 파일을 포함시키는 것이다. // stacktp.h -- a stack template #ifndef STACKTP_H_ #define STACKTP_H_ template class Stack { private: enum {MAX = 10}; // constant specific to class Type items[MAX]; // holds stack items int top; // index for top stack item public: Stack(); bool ise.. 더보기
함수 템플릿 함수 템플릿은 임의 데이터형으로 함수를 정의하는 것을 허용한다. 기본적인 함수 템플릿 //funtemp.cpp - 함수 템플릿 사용하기 #include template void Swap(t & a, t & b); int main() { using namespace std; int i = 10; int j = 20; cout 더보기
cctypes 라이브러리 cctype 문자 함수 함수 이름 리턴값 isalnum() 전달인자가 영숫자, 즉 알파벳 문자이거나 숫자이면 true isalpha() 전달인자가 알파벳 문자이면 true isblank() 전달인자가 빈칸 문자 또는 수평 탭 문자이면 true iscntrl() 전달인자가 제어 문자이면 true isdigit() 전달인자가 십진 숫자이면(0~9) true isgragh() 전달인자가 빈칸이 아닌 인쇄할 수 있는 문자이면 true islower() 전달인자가 소문자이면 true isprint() 전달인자가 빈칸을 포함하여 인쇄할 수 있는 문자이면 true ispunct() 전달인자가 구두점 문자이면 true isspace() 전달인자가 표준 화이트스페이스, 즉 빈칸, 용지 이송, 개팅, 캐리지 리턴, 수평 .. 더보기
확장 char형 : wchar_t 때로는 프로그램이 1바이트로 표현할 수 엇ㅂ는 문자세트를 처리해야 하는 경우도 있다. C++는 이것을 두 가지 방법으러 처리한다. 첫째, 확장 문자 세트가 시스템의 기본 문자 세트이면, 컴파일러 개발업체가 char형을 처음부터 2바이트 또는 그 이상으로 만드는것이다. 둘째, 기본 문자 세트에 확장 문자 세트를 동시에 지원하는 것이다. 즉, 보통의 8비트 char형으로 기본 문자세트를 나타내고, wchar_t형(wide charactor type에서 w,char,t를 각각 따 왔다.)으로 확장 문자 세트를 나타내는 것이다. wchar_t형은 시스템에 사용되는 가장 큰 확장 문자 세트를 나타낼 수 있을 만큼의 충분한 비트 폭을 가진 정수형이다. wchar_t 형은 기초 데이터형(underlying type).. 더보기
signed char형과 unsigned char형 int형과는 달리, char형은 signed형이나 unsigned형으로 미리 정해져 있지 않다. 그것은 C++ 시스템 개발자가 하드웨어 특성에 맞추어 알맞은 char형을 정할 수 있도록 하기 위한 배려이다. 그러나 char형이 어느 특별한 한 가지 행동만을 보여야 한다면, signed char형 또는 unsigned char형을 사용하여 그 행동을 명시적으로 제한할 수 있다. char fodo; //signed형 또는 unsigned형 unsigned char bar; //명백히 unsigned형 signed char snark; //명백히 signed형 이러한 구별은 char형으로 수를 나타내고 할 때 특히 중요하다. unsigned char형은 0에서 255까지의 범위를 나타낼 수 있고, signed.. 더보기
climits climits에 정의되어 있는 상수 기호들 CHAR_BIT char형의 비트 수 CHAR_MAX char형의 최대값 CHAR_MIN char형의 최소값 SCHAR_MAX SCHAR_MIN UCHAR_MAX SHRT_MAX SHRT_MIN USHRT_MAX INT_MAX INT_MIN UINT_MAX LONG_MAX LONG_MIN ULONG_MAX 더보기
함수 객체(Functor) 많은 STL 안고리즘들이 펑크너라고 부르는 함수 객체를 사용한다. 평크터는 함수처럼 () 과 함께 사용할 수 있는 객체이다. 일반 함수의 이름, 함수를 지시하는 포인터, () 연산자가 오버로딩된 클래스 객체 - 즉 operator() ()라는 이상한 모양의 함수가 정의된 클래스들이 모두 펑크터가 될 수 있다. class Linear { private: double slope; double y0; public: Linear(double _s1 = 1, double _y = 0) :slope(_s1), y0(_y) {} double operator()(double x){return y0 + slope*x;} }; 이제 오버로딩된 () 연산자가 Linear 객체들을 함수처럼 사용하는 것을 허용한다. Linea.. 더보기
이터레이터 이터레이터가 필요한 이유 - 이터레이터를 이해하는 것이 STL을 이해하는 열쇠이다. 템플릿이 알고리즘을 저장할 데이터형과 무관하게 만드는 것처럼, 이터레이터는 알고리즘을 사용할 컨테이너형과 무관하게 만든다. 이터레이터는 STL의 일반화 접근에 필수 구성요소 이다. find 함수를 구현하기 위해 이터레이터가 가져야 하는 특성 이터레이터가 참조하는 값에 접근하기 위해 내용 참조를 할 수 있어야 한다. 즉, p가 이터레이터라면 *p가 정의되어야 한다. 한 이터레이터를 다른 이터레이터에 대입할 수 있어야 한다. 즉, p와 q가 이터레이터라면 p = q 라는 표현이 정의되어야 한다. 한 이터레이터가 다른 이터레이터에 대입할 수 있어야 한다. 즉, p와 q가 이터레이터라면 p = q 라는 표현이 정의되어야 한다. .. 더보기
표준 템플릿 라이브러리(STL-Standard Template Library) 표준 템플릿 라이브러리(STL-Standard Template Library)는 컨테이너, 이터레이터, 함수 객체, 알고리즘을 나타내는 탬플릿들의 집합을 제공한다. 컨테이너는, 배열과 같이, 여러 개의 값을 저장할 수 있는 구성 단위이다. STL 컨테이너는 동질적(homogeneous)이다. 즉, 그들은 같은 종류의 값들을 저장한다. 알고리즘은, 배열을 소트하거나 리스트에서 특정 값을 검색하는 것과 같은, 특별한 작업들을 수행하기 위해 사용하는 방법이다. 이터레이터는, 배열 안에서 포인터를 사용하여 위치를 옮기듯이, 컨테이너 안에서 위치를 옮길수 있도록 도와주는 객체들이다. 즉, 이터레이터는 포인터의 일반화이다. 함수 객체는 함수와 비슷한 역할을 하는 객체이다. 함수 객체는 클래스 객체일 수도 있고, 함.. 더보기
auto_ptr 클래스 auto_ptr 객체를 생성하려면, auto_ptr 템플릿이 들어있는 memory 헤더파일을 포함시켜야 한다. 그러고 나서, 일반적인 템플릿 구문을 사용하여 필요한 포인터의 종류를 구체화한다. auto_ptr pd(new double); //double 을 지시하는 auto_ptr //(double* 대신에 사용한다) auto_ptr ps(new string); //string을 지시하는 auto_ptr //(string * 대신에 사용한다) #include void remodel(string & str) { auto_ptr ps(new string(str)); ... if(weird_thing()) throw exception(); str = *ps; //delete ps; 이행은 이제 필요없다. re.. 더보기