Microsoft MVP성태의 닷넷 이야기
VC++: 3. template 활용의 최고 단계! [링크 복사], [링크+제목 복사],
조회: 24497
글쓴 사람
정성태 (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

비밀번호

댓글 작성자
 




... 151  152  153  154  155  156  157  158  [159]  160  161  162  163  164  165  ...
NoWriterDateCnt.TitleFile(s)
1140정성태10/6/201129707.NET Framework: 242. 닷넷 개발자 입장에서 이해해 보는 자바의 서블릿, JSP
1138정성태10/1/201148883Java: 11. 웹 로직에서 MS-SQL 서버 연결 [2]
1137정성태9/30/201132796Java: 10. 닷넷 개발자가 설치해 본 Oracle WebLogic Server - 설치 및 기본 도메인 구성
1136정성태9/29/201128547개발 환경 구성: 131. Visual Studio - ASP.NET의 Code-behind처럼 cs 파일을 그룹핑하는 매크로 함수 [2]파일 다운로드1
1135정성태9/29/201125636오류 유형: 138. TF10216: Team Foundation services are currently unavailable
1134정성태9/27/201133243.NET Framework: 241. C# 5.0에 새로 추가된 Caller Info 특성 [5]
1133정성태9/25/201136752VC++: 54. C++로 만든 WinRT 프로그램 [2]
1132정성태9/24/201176236Java: 9. 자바의 keytool.exe 사용법과 Tomcat의 SSL 통신 설정
1131정성태9/23/201132134Java: 8. 닷넷 개발자가 구현해 본 자바 웹 서비스 (2)
1130정성태9/23/201140680Java: 7. 닷넷 개발자가 구현해 본 자바 웹 서비스 (1)파일 다운로드2
1129정성태9/22/201132307개발 환경 구성: 130. Hyper-V에 MS-DOS VM 만드는 방법 - MSDN 구독자 대상 [3]
1128정성태9/20/201132555오류 유형: 137. KB2449742 보안 업데이트로 인한 충돌 문제 해결 - 두 번째 이야기
1127정성태9/19/201135987Java: 6. Java에서 MySQL 사용 [2]
1126정성태9/18/201131090Math: 3. "유클리드 호제법"과 "Bezout's identity" 구현 코드(C#)파일 다운로드1
1125정성태9/17/201128981Windows: 54. Windows 8 개발자 Preview를 사용해 보고... [2]
1124정성태9/17/201129327.NET Framework: 240. System.Collections.ArrayList가 .NET 4.5에서 지원이 안된다??? [2]
1123정성태9/17/201168396Windows: 53. 2가지 모드의 Internet Explorer 10과 ActiveX [6]
1122정성태9/16/201135950Windows: 52. 새롭게 지원되는 WinRT 응용 프로그램 [7]
1121정성태9/12/201130702Java: 5. WTP 내에서 서블릿을 실행하는 환경
1120정성태9/11/201130678.NET Framework: 239. IHttpHandler.IsReusable 속성 이야기파일 다운로드1
1119정성태9/11/201129295Java: 4. 이클립스에 WTP SDK가 설치되지 않는다면? [2]
1118정성태9/11/201141718Java: 3. 이클립스에서 서블릿 디버깅하는 방법 [4]
1117정성태9/9/201128778제니퍼 .NET: 17. 제니퍼 닷넷 적용 사례 (2) - 웹 애플리케이션 hang의 원인을 알려주다.
1116정성태9/8/201160209Java: 2. 자바에서 "Microsoft SQL Server JDBC Driver" 사용하는 방법
1115정성태9/4/201133431Java: 1. 닷넷 개발자가 처음 실습해 본 서블릿
1114정성태9/4/201137849Math: 2. "Zhang Suen 알고리즘(세선화, Thinning/Skeletonization)"의 C# 버전 [4]파일 다운로드1
... 151  152  153  154  155  156  157  158  [159]  160  161  162  163  164  165  ...