Edmund's zone

导航

公告

随笔分类

随笔档案

最新评论

统计

常用链接

阅读排行榜

评论排行榜

最新评论

Re:输出1到1000的数 书豪 2011-01-17 08:26  
@Edmund Li 我也是没想到static变量,这题很早以前遇到过,忘记了。最近学到模块这块。
Re:输出1到1000的数 Edmund Li 2011-01-16 22:36  
@voop 可能是吧。编译器……
Re:输出1到1000的数 Edmund Li 2011-01-16 22:36  
@书豪 第一反应没有想到模板这块。想着采用分母为零这个异常,谁知道竟然一波三折。
Re:输出1到1000的数 Edmund Li 2011-01-16 22:27  
牛!没想到用static,想起了独孤九剑:)
Re:输出1到1000的数 可可西 2011-01-16 19:31  
class Printer { public: Printer() { static unsigned i=1; cout << i++ << endl;} }; void main() { Printer p[1000]; }
Re:输出1到1000的数 书豪 2011-01-16 14:27  
这道题应该用模块template来做,用“故意造成运行时错误”这种方法,我感觉不是很优美。更何况存在编译器差异性。 用模板具现化代替循环,用全特化代替if-else。 [code=cpp] #include <iostream> #include <cassert> template<int start, int end> class PrintRange { public: void operator()() { assert(start <= end); PrintInt(Int2Type<start>()); } private: template<int n> struct Int2Type { enum { Value = n }; }; template<int n> void PrintInt(Int2Type<n>) { std::cout << n << std::endl; PrintInt(Int2Type<n + 1>()); } template<> void PrintInt(Int2Type<end>) { std::cout << end << std::endl; } }; void main() { PrintRange<1, 1000> f; f(); } [/code]
Re:输出1到1000的数 voop 2011-01-14 11:25  
估计孤零零一个计算语句被优化掉了。。。