- 博客(13)
- 资源 (6)
- 收藏
- 关注
原创 输出流效率测试
这个问题Effective STL中有提过。今天编程时由于涉及到输出的效率,加上闲着没事,所以做了这测试。 测试对象: 1.cout 2.ostream_iterator 3.ostreambuf_iterator 4.printf 5.cout.put 6.rdbuf()->sputn 测试平台: 1.6GHz处理器 测试代码: #include
2013-01-12 13:30:03
976
原创 VS窗体编辑器中的控件顺序
这几天用VS写window api窗体界面时,遇到了一个问题:后添加进窗体的控件会自动置于之前的控件之上。具体如下: 1.添加一个button控件 2.再添加一个button控件 因为后添加的控件是覆盖之前的控件,所以这时候button2是置于button1之上的。那么如果我想把button1置于button2之上,那该怎么做呢? 后来自己试验了一番,发现了
2012-12-17 19:05:33
2687
原创 用&&和||代替if..else..
在C++中,像这样的表达式:expression1 && expression2 如果expression1的值为零时,整个&&表达式就会结束,也就是说不会再去计算expression2了。 &&表达式的这种计算策略,叫作短路求值(More Effective C++中叫作“骤死式”)。 其实,如果我们利用这个特性,就可以用&&和||来代替if..else..。 if..else
2012-04-11 13:24:12
3032
原创 在函数内定义“局部函数”
在函数里也能定义函数?呵呵,这当然是不能的,但函数对象却是可以的。如果用旧的方法去定义一个函数对象,那就还要自己先编写一个函数类,这样还不够方便。 但C++11发布后,在函数内简便地定义“函数”(其实是函数对象)就成为了可能: #include int main() { auto a = [](){std::cout << "Lambda is flexible!"
2012-04-04 11:43:15
7909
原创 关于自定义类型名和函数名相同
以前一直以为,在C++中定义了结构体类型后,可以直接这样用: struct T {}; int main() { T p; return 0; } 但今天遇到一个问题,如果代码中还有一个与自定义类型同名的函数,还可以这样用吗? struct T {}; void T() {} int main() { T p; /
2012-04-03 10:56:21
2285
原创 关于DEBUG版程序的检测错误的小技巧
在C++众多函数库中,防止或检测程序出错的库也有几个,例如断言------cassert(立即退出程序),异常-------exception(立即退出某域)等,其中也有一个很适合在调试中找出具体错误的库-------cerrno(仅显示错误信息)。 对于cerrno库,它可以直接显示出错误的原因,而不需要程序员去寻找出错的原因,可参考以下代码: #include #i
2012-03-29 15:59:20
990
原创 向文件写入宽字符
对于向文件写入宽字符,例如中文字符,stl中其实也有一些库是专门针对这个问题而生的。 例如wfstream就是其中一个。在这里,我用到了wfstream来使宽字符输出到文件。 #include using namespace std; int main() { wfstream op("test.txt", ios::out); op.imbue((locale)"chs"
2012-03-17 11:30:08
1578
原创 模拟光反射
对于模拟镜面上光反射(即二维),我们可以设镜面为X轴,在镜面上建立直角坐标系。然后,用一个一次函数来表示光的路线。 我们设这个一次函数为:y = kx + b 当光线碰到镜面时,则会发生镜面反射。而此时,光的路线就会改变。根据镜面反射的原理,反射角等于入射角。于是,原来的k将变为-k。而b的值也会发生改变。 而具体b的值,则必须根据入射点的值去求。 我们先设反射后的光线的路线函数为:
2012-02-08 15:49:06
2590
原创 关于BS_OWNERDRAW的用法
BS_OWNERDRAW用于自绘按钮,通常与WM_CTLCOLORBTN消息连用,如下: LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static HWND button0; switch (message) { case WM_CREATE: button0 =
2012-02-04 19:37:35
11585
原创 int()的作用
对于int(),相信大家都不陌生吧,最常见就是拿它用作强制类型转换。今天写个关于int()用法的总结。 一.用于强制类型转换(返回无名对象) 如: #include int main() { std::cout << int(7.8); //输出7 } 或 #include int main() { std::cout << int(); //输出0
2011-10-22 12:38:09
4156
原创 关于const的位置
如下两段代码: 代码一: int main() { const int a = 1; return 0; } 代码二: int main() { int const a = 1; return 0; } 上面两段代码内容一样,但const 和 int的位置不同。虽然两种都可以,但我更偏爱第二种,因为它可以理解成:成为常量的是int类型的值。 在下例中将更明显:
2011-08-19 00:55:09
781
原创 map/set自动排序的陷阱
这里我想用一系列的代码来阐述这个问题. 1: 请看如下代码: #include #include using namespace std; int main() { complex a(1, 2); map, int> k; //默认按小于排序 //k[a] = 5; return 0; } 以上代码运行正常
2011-08-17 16:34:35
16501
原创 关于cin.getline()
在网上查过关于cin.getline()用法之类的文章,也翻阅过不少有关I/O的书籍,我便认为已深刻认识了cin.getline(),但一次意外的使用却使我百思不得其解,请看以下两段代码。 代码1: void main() { char a[10]; cin.getline(a,10);//输入"123456789" cout a endl; //输出
2011-04-03 11:28:00
3183
字符雨代码(用类实现)
2012-03-18
逆波兰式计算器
2012-11-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅