728x90
반응형

템플릿 3

[C++] Template Aliases

uisng 또는 typedef를 이용하여 유형에 대한 별칭을 정의할 수 있다. using 구문은 일부 인수가 바인딩된 템플릿의 별칭을 정의하는 데 사용할 수 있다는 중요한 의미에서 더 일반적이다. template vector; using Cvec = vector; // both arguments are bound Cvec vc = {'a', 'b', 'c'}; // vc is a vector template using Vec = vector; // vector using my allocator (2nd argument is bound) Vec fib = {0, 1, 1, 2, 3, 5, 8, 13}; // fib is a vector 일반적으로 템플릿의 모든 인수를 바인딩하면 유형을 얻지만 일부만 바이딩..

[C++] Class Template

데이터 멤버 보통 클래스의 경우 클래스 템플릿에는 모든 유형의 데이터 멤버가 포함될 수 있다. non-static 멤버는 해당 저의 또는 생성자에서 초기화할 수 있다. template struct X { int m1 = 7; T m2; X(const T& x) :m2{x} { } }; X xi {9}; X xs {"Rapperswil"}; non-static 데이터 멤버는 const일 수 있지만 constexpr일 수는 없다. 멤버 함수 보통 클래스는 클래스 템플릿의 non-static 멤버 함수를 클래스 내부 또는 외부에서 정의할 수 있다. template struct X { void mf1() { /* ... */ } // defined in-class void mf2(); }; template vo..

[C++] Simple String 템플릿

특정 문자에 대한 의존도를 최소화하면서 '문자열'의 개념을 표현하고자 한다. 예를 들어 부호 있는 문자, 부호 없는 문자, 중국어, 그리스어 등등 다양한 context에 유용하게 사용한다. 문자열의 정의는 문자를 복사할 수 있다는 사실에 의존하고 다른 것은 거의 없다. template class String { public: String(); explicit String(const C∗); String(const String&); String operator=(const String&); // ... C& operator[](int n) { return ptr[n]; } // unchecked element access String& operator+=(C c); // add c at end // .....

728x90
반응형