- 博客(13)
- 资源 (6)
- 收藏
- 关注
原创 输出流效率测试
这个问题Effective STL中有提过。今天编程时由于涉及到输出的效率,加上闲着没事,所以做了这测试。测试对象:1.cout2.ostream_iterator3.ostreambuf_iterator4.printf5.cout.put6.rdbuf()->sputn测试平台:1.6GHz处理器测试代码:#include
2013-01-12 13:30:03 878
原创 VS窗体编辑器中的控件顺序
这几天用VS写window api窗体界面时,遇到了一个问题:后添加进窗体的控件会自动置于之前的控件之上。具体如下:1.添加一个button控件2.再添加一个button控件因为后添加的控件是覆盖之前的控件,所以这时候button2是置于button1之上的。那么如果我想把button1置于button2之上,那该怎么做呢?后来自己试验了一番,发现了
2012-12-17 19:05:33 2495
原创 用&&和||代替if..else..
在C++中,像这样的表达式:expression1 && expression2如果expression1的值为零时,整个&&表达式就会结束,也就是说不会再去计算expression2了。&&表达式的这种计算策略,叫作短路求值(More Effective C++中叫作“骤死式”)。其实,如果我们利用这个特性,就可以用&&和||来代替if..else..。 if..else
2012-04-11 13:24:12 2903
原创 在函数内定义“局部函数”
在函数里也能定义函数?呵呵,这当然是不能的,但函数对象却是可以的。如果用旧的方法去定义一个函数对象,那就还要自己先编写一个函数类,这样还不够方便。 但C++11发布后,在函数内简便地定义“函数”(其实是函数对象)就成为了可能:#include int main(){ auto a = [](){std::cout << "Lambda is flexible!"
2012-04-04 11:43:15 7745
原创 关于自定义类型名和函数名相同
以前一直以为,在C++中定义了结构体类型后,可以直接这样用:struct T{};int main(){ T p; return 0;}但今天遇到一个问题,如果代码中还有一个与自定义类型同名的函数,还可以这样用吗?struct T{};void T(){}int main(){ T p; /
2012-04-03 10:56:21 2184
原创 关于DEBUG版程序的检测错误的小技巧
在C++众多函数库中,防止或检测程序出错的库也有几个,例如断言------cassert(立即退出程序),异常-------exception(立即退出某域)等,其中也有一个很适合在调试中找出具体错误的库-------cerrno(仅显示错误信息)。 对于cerrno库,它可以直接显示出错误的原因,而不需要程序员去寻找出错的原因,可参考以下代码: #include #i
2012-03-29 15:59:20 884
原创 向文件写入宽字符
对于向文件写入宽字符,例如中文字符,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 1485
原创 模拟光反射
对于模拟镜面上光反射(即二维),我们可以设镜面为X轴,在镜面上建立直角坐标系。然后,用一个一次函数来表示光的路线。我们设这个一次函数为:y = kx + b 当光线碰到镜面时,则会发生镜面反射。而此时,光的路线就会改变。根据镜面反射的原理,反射角等于入射角。于是,原来的k将变为-k。而b的值也会发生改变。而具体b的值,则必须根据入射点的值去求。我们先设反射后的光线的路线函数为:
2012-02-08 15:49:06 2363
原创 关于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 11280
原创 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 3935
原创 关于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 714
原创 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 16340 1
原创 关于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 3017 2
逆波兰式计算器
2012-11-25
字符雨代码(用类实现)
2012-03-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人