###1.结构体重载 struct T{ int a,b; bool operator <(const T &t) const{//重载小于号, if(t.a!=a) return a<t.a;//当a<t.a的时候a优先于t.a return b<t.b;//同理; } }; 一般结构体排序的时候 ...
转载 2021-09-30 21:26:00
116阅读
2评论
前言 写的很乱,各种内容都有。仅仅是为了记录一下 而且内容极其不严谨(没错,只有实践,没有理论)!请各位谨慎驾驶! 强制内联 本地测试结果: 开O2之后inline和Inline加不加没啥用 不开O2时inline可能会有负优化,而Inline会让程序快很多 当然也可以强制不inline 直接在函数
C/C
原创 2021-06-03 10:17:31
307阅读
C++代码的执行主要分为编译阶段和链接阶段,掌握好编译技巧对于开发大有裨益。
原创 精选 2023-03-05 22:55:49
289阅读
c
转载 2012-04-13 19:20:00
114阅读
2评论
无限循环优先选用for(;????,而不是while(1)在C语言中,最常用的无限循环语句主要有两种:while(1)和for(;;)。从功能上讲, 这两种语句的效果完全一样。那么,我们究竟该选择哪一种呢?其实,for(;;)语句运行速度要快一些。按照for的 语法规则,两个分号;分开的是3个表达式。现在表达式为空,很自然地被编译成无条件的跳转(即无条件循环,不用判断条件)。如代码for(;;)在M...
原创 2021-06-02 11:18:30
224阅读
一、变量与值得比较1、布尔变量与零值的比较不可将布尔变量直接与 TRUE、 FALSE或者 1、 0进行比较 。据布尔类型的语义,零值为“ 假”(记为 FALSE),任何非零值都是“ 真”(记为TRUE)。 TRUE的值究竟是什么并没有统一的标准。例如 Visual C++ 将 TRUE定义为 1,而 Visual Basic则将 TRUE定义为-1 。假设布尔变量名字为 flag,它与零...
原创 2021-06-02 11:18:33
504阅读
循环展开简单的循环可以展开以获取更好的性能,但需要付出代码体积增加的代价。循环展开后,循环计数应该越来越小从而执行更少的代码分支。如果循环迭代次数只有几次,那么可以完全展开循环,以便消除循坏带来的负担。例如:for(i=0; i<3; i++){ something(i);}展开为:something(0);something(1);something(2);这...
原创 2021-06-02 11:18:31
457阅读
参数的书写要完整参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。如果函数没有参数,则用void填充。例如:voidSetValue(intwidth,intheight); // 良好的风格voidSetValue(int,int); // 不良的风格floatGetValue(void); // 良好的风格floatGetValue(); //...
原创 2021-06-02 11:18:32
227阅读
nual() {...
转载 2021-09-07 10:51:03
125阅读
1.CC++结构体的初始化今天看到项目中对自定义结构体初始化方式有点陌生,特在
原创 2023-04-25 14:55:11
1083阅读
 1. 牢记Ahmdal定律                   funccost表示是函数func的运行时间百分比,funcspeedup是你优化后函数的运行系数;所以,如果函数TriangleIntersect()占用40%的运行时间,而在你优化后使它运行快了两倍,那么你的程序运行能够快了25%;这意味着不经常使用的代码不需要做过多优化(或者完全不优化),比如场景加载过程;也就是:让频繁调用的
转载 2014-09-13 10:52:00
216阅读
1点赞
2评论
我们说的 Modern C++,一般指的是 C++11 及以后的标准,从 C++ 11 开始,Modern C++ 引入了大量的实用的特性,主要是两大方面,学习的时候也可以从这两大方面学习: 增强或者改善的语法特性; 新增的或者改善的 STL 库。 我们来看几个具体的案例: 案例 1:统一的类成员初 ...
转载 2021-09-18 02:25:00
422阅读
2评论
1) 有时候,你可能在编译的时候,计算机突然非法关机了(可能某人不小心碰了电源或你的内存不稳定等原因)。当你重启机器后打开刚才的项目,重新进行编译,发现VC会崩掉。你或许以为你的VC编译器坏了,其实不然(你试试编译其它项目,还是好的!),你只要将项目的.ncb、.opt、.aps、.clw文件以及Debug、Release目录下的所有文件都删掉,然后重新编译就行了。  2) 如果你想与别人共享你的...
转载 2010-08-31 16:14:00
257阅读
2评论
浮点数的输出,可以进行格式上的控制。例如:1、保留小数位 2、输出结果空格(空格数)=(空格总数)-(变量本身位置数量)
嵌入式C语言优化技巧   1 概述 嵌入式系统是指完成一种或几种特定功能的计算机系统,具有自动化程度高,响应速度快等优点,目前已广泛应用于消费电子,工业控制等领域.嵌入式系统受其使用的硬件以及运行环境的限制,非常注重代码的时间和空间效率,因此选择一种合适的开发语言十分重要.目前,在嵌入式系统开发中可使用的语言很多,其中 C语言应用得最广泛.虽然用 C 语言编程具有许多优点,但基于嵌入式系统的C
转载 2013-12-12 17:20:00
183阅读
2评论
通讯录程序(C/C++
原创 2015-11-29 00:05:33
2186阅读
流水线被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅指单周期指令)。如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线再次填满。因此,尽量少的使用跳转指令可以提高程序执行效率,解决发案就是尽量使用指令的“条件执行”功能。在LPC2200系列中,可以通过过下面的程序延迟10毫秒:for(i=0;i<200;i++){for(j=0;...
原创 2022-09-26 09:57:34
90阅读
C语言常常让人觉得它所能表达的东西非常有限。它不具有类似第一级函数和模式匹配这样的高级功能。但是C非常简单,并且仍然有一些非常有用的语法技巧和功能,只是没有多少人知道罢了。一、指定的初始化...
转载 2021-12-30 11:48:10
199阅读
字符串反转: string s; reverse(s.begin(),s.end()); 单个数字转字符: string s=""; int n=9; s+=(n+'0'); cout<<s<<endl; 单个字符转数字: char c='9'; int n=c-'0'; cout<<c<<endl ...
转载 2021-07-11 23:15:00
447阅读
2评论
SFINAE是Substitution Failure Is Not An Error的缩写,即利用编译器的模板匹配失败来实现某些功能。C++中模板匹配遵循尽可能精确的原则,当最精确的模板匹配失败时会再尝试候选模板,因此利用同名但模板参数不同的多个模板函数可以达到编译器检查或判断的目的。 比如,对于多个module_xx类,需要检查其是否存在get_name函数,以采用不同的处理。 假设两个类
原创 2012-11-06 18:33:54
7103阅读
  • 1
  • 2
  • 3
  • 4
  • 5