最新评论
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
估计孤零零一个计算语句被优化掉了。。。
Re:Solve 'starting debugger causes Visual Studio internal error' shuo 2010-08-26 15:00
bravo
