Microsoft MVP성태의 닷넷 이야기
VC++: 3. template 활용의 최고 단계! [링크 복사], [링크+제목 복사],
조회: 28338
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

다음은, 제가 추천해드린 Standard C++ Research 클럽의 게시판에 써 있는 내용입니다.

훌륭하군요. 자유로이 활용은 못해도, 알아둔다는 차원에서는 꼭 봐야 될 것 같습니다.

////////////////////////////////////////////////

제목 : 1부터 1000까지 더하는 가장 빠른 방법~~
글쓴이 : 이해석(97079258)
내용 :

요새 템플릿을 좀 보구 있는데 정말 단순한

T-Container 말구 할만한게 많군요....

다음은 1부터 1000까지 더하는 가장 빠른 방법입니다...

물론 가장 빠르다기 보다는 컴파일타임에 미리 계산해

놓는 다는 게 맞긴 하겠지만...

#include < iostream>

using namespace std;

template< int X> struct SumNumber
{
typedef SumNumber< X-1> result;
enum { sumofNumber = X + result::sumofNumber};
};

template< > struct SumNumber< 0>
{
enum { sumofNumber = 0};
};

int main(int argc, char* argv[])
{
cout < < SumNumber< 1000> ::sumofNumber < < endl;
return 0;
}


////////////////////////////////////////////////

제목 : [답변] 이거 템플릿 메타 프로그래밍인가요?
글쓴이 : 김재우(kizoo)
내용 :

네. 생각보다 오래된 기법이지요. 이제는 이 기법이 충분히 실용성 있다고 생각합니다. Blitz++ 같은 numeric library가 이 기법을 아주 잘 활용하지요. 속도가
Fortran에 근접한다는 얘기가 있을 정도입니다.

이런 기법이 가능한 이유는 C++의 template 전 처리기가 마치 template 전용 인터프리터 처럼 동작하기 때문입니다. 마치 또 하난의 언어가 숨어있는 것과 진배 없지요. C++가 다른 언어에 비해 매력적인 이유가 이런 메타언어 특성이 많기 때문에, 능력만 있다면 아주 깔끔하고 재미있는 코드를 많이 쓸 수 있다는 점입니다.

문제는 저런 특성을 재밌게 응용할 때 까지 너무 많은 시간이 걸린다는 점입니다만.









[최초 등록일: ]
[최종 수정일: 7/17/2003]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 166  167  168  169  170  171  172  173  174  175  176  [177]  178  179  180  ...
NoWriterDateCnt.TitleFile(s)
690정성태4/5/200930058오류 유형: 75. Event Viewer - The data is invalid (13)
688정성태4/5/200935989VS.NET IDE: 60. Output 경로에 매크로 상수 사용하는 방법 [1]
687정성태4/5/200929881.NET Framework: 126. Composite Application Guidance for WPF and Silverlight
689정성태4/5/200930186    답변글 .NET Framework: 126.1. CAG - 빌드 환경 구성파일 다운로드1
691정성태4/6/200929518    답변글 .NET Framework: 126.2. CAG - Shell 띄우기파일 다운로드1
695정성태4/10/200930967    답변글 .NET Framework: 126.3. CAG - 간단한 유형의 모듈 제작파일 다운로드1
703정성태4/18/200930228        답변글 .NET Framework: 126.6. CAG - Tabbed MDI Shell 적용파일 다운로드1
697정성태4/13/200934378    답변글 .NET Framework: 126.4. CAG - Unity 컨테이너 사용 [1]파일 다운로드1
698정성태4/15/200933637    답변글 .NET Framework: 126.5. CAG에 MVVM 패턴 적용 (1) [2]파일 다운로드1
686정성태4/4/200955840웹: 11. IE 8 - TabProcGrowth 레지스트리 키 [2]
685정성태4/3/200956228개발 환경 구성: 38. Hyper-V 사용 후기 [5]
684정성태4/2/200930832오류 유형: 74. IE 8 설치 이후, VS.NET 위저드 화면 동작 오류
683정성태3/28/200937773디버깅 기술: 26. 보호 모드로 응용 프로그램 디버깅하는 방법 - 두 번째 이야기 [3]
682정성태3/27/200934536디버깅 기술: 25. 보호 모드로 응용 프로그램 디버깅하는 방법 [2]
681정성태3/23/200932115오류 유형: 73. SQL Server 2008 Express 설치 오류
680정성태3/21/200931925.NET Framework: 125. WPF - RadioButton에 대한 데이터바인딩(2) [1]파일 다운로드1
679정성태3/15/200926584오류 유형: 72. IE 8 멈춤 현상 - 두 번째 이야기
678정성태3/15/200932052개발 환경 구성: 37. Hyper-V에서 Vista의 Virtual Machine Bus 장치 인식 문제
677정성태3/15/200932215개발 환경 구성: 36. MSI P45 Neo3-FR V2 - RAID 1 구성
997정성태2/26/201127487    답변글 개발 환경 구성: 36.1. 개발 환경 구성: 34 - 1. RAID 1 구성 이후...
676정성태3/15/200928529오류 유형: 71. IE 8 RC1 - 멈춤 현상
675정성태3/14/200931547오류 유형: 70. Virtual Machine Additions 제거
673정성태3/11/200930211웹: 10. 금일 진행되었던 마이크로소프트 IE 8 행사의 ActiveX 세션 PPT [6]파일 다운로드1
672정성태3/1/200943697Windows: 43. Loopback network adapter 설치하기 [2]
670정성태2/22/200936541.NET Framework: 124. IIS 7에서 SVC 호스팅 [1]
669정성태2/21/200930411오류 유형: 69. The SQL Server Network Interface library could not register the Service Principal Name (SPN) for the SQL Server service.
... 166  167  168  169  170  171  172  173  174  175  176  [177]  178  179  180  ...