제네릭 프로그래밍
-
-
일반적 문자(generic characters)제네릭 프로그래밍 2009. 2. 4. 16:25
8비트 문자 집합 ASCII Latin-1 문자 집합 다중 바이트 문자(multiple character) wide character(16비트) Unicode UTF-16 엔코딩 wchar_t WCHAR LPWSTR #define UNICODE // Windows 함수 #define _UNICODE // C 라이브러리 #include #include int _tmain(int argc, LPTSTR argv[]) { ... } TCHAR, LPTSTR, LPCGSTR _T("..."), TEXT("..."), _TEXT("...") _fgettc() _tprintf() _stprintf() // sprintf() _tstcpy() // strcpy() _itot() // itoa() _ttoi() _to..
-
반복자 클래스제네릭 프로그래밍 2009. 1. 7. 23:24
두 개의 반복자가 동일한 연산을 지원한다면, 그 두 연산의 이름은 같다. 입력 반복자(input iterator) 순차적 읽기 전용 접근 .==() .!=() .++() .*() // 읽기 .->() #include vector v; copy(istream_iterator(cin), istream_iterator(), back_inserter(v)); 출력 반복자(output iterator) 순차적 쓰기 전용 접근 write-once ( single-assignment ) ++() .*() // 쓰기 std::back_inserter #include ... copy(v.begin(), v.end(), ostream_iterator(cout, " ")); 순방향 반복자(forward iterator) 순..
-
클래스 템플릿제네릭 프로그래밍 2009. 1. 7. 19:48
멤버 템플릿 함수도 정의할 수 있다. #ifdef _MSC_VER #pragma warning( disable: 4786 ) #endif #include #include using namespace std; template class BinaryTree; template class BTnode; template ostream& foo( ostream &os, const BTnode &bt ); template class BTnode { friend class BinaryTree; friend ostream& // foo( ostream&, const BTnode& ); foo( ostream&, const BTnode& ); public: BTnode( const valType &val ); const ..
-
제네릭 알고리즘제네릭 프로그래밍 2009. 1. 1. 00:37
컨테이너 요소들을 다룬다. 알고리즘은 그들이 사용하는 반복자들에 대해 어떠한 조건이 필요한지를 확실히 이해해야 한다. template IteratorType find( IteratorType first, IteratorType last, const elemType &value ) { for ( ; first != last; ++first ) if ( value == *first ) return first; return last; } template OutputIterator filter( InputIterator first, InputIterator last, OutputIterator at, const ElemType &val, Comp pred ) { while (( first = find_if( f..