- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
好习惯从现在开始养成讲述
程序效率问题;控制语句
参数传递
循环语句;#includeiostream
using namespace std;
int main()
{
int score;
cout请输入分数:endl;
cinscore;
if(score=90)
cout得Aendl;
else if(score=80score90)
cout得Bendl;
else if(score=70score80)
cout得Cendl;
else if(score=60score70)
cout得Dendl;
else
cout得E(不及格)endl;
return 0;
};#includeiostream
using namespace std;
int main()
{
int score;
cout请输入分数:endl;
cinscore;
score/=10;
switch(score)
{
case 10:
case 9:
cout得Aendl;break;
case 8:
cout得Bendl;break;
case 7:
cout得Cendl;break;
case 6:
cout得Dendl;break;
default:
cout得E(不及格)endl;break;
}
return 0;
};大家分析一下,使用这两个程序来判断成绩等级有什么不同?
如果纯粹比较数字或字符,建议大家使用switch语句,因为他只会在一开始的switch括号中取出变量值一次,然后将这个值与下面所设定的case比较,但如果使用if,每次遇到条件式时,都要取出变量值,效率的差异就在这。
当然并不是使用if就不好,遇到符合条件时,switch就帮不上忙了,由于无法在switch中组合复杂的条件语句,这是旧的使用if了。
所以,总的来说,需要switch,if搭配着灵活使用。
;值传递
址传递
下面看一下几种传递情况;例: (判断两个字符串是否相等的函数)
bool Compare(string s1,string s2)
bool Compare(string *s1,string *s2)
bool Compare(string s1,string s2)
大家看看这几行代码有什么差异
若使用第一个函数(值传递),则在参数传递和函数返回时,需要调用string的构造函数和析构函数两次(即共多调用了四个函数),而其他几个函数(指针传递和引用传递)则不需要调用这四个函数。因为指针和引用都不会创建新的对象。如果构造一个对象和析构一个???象的开销是庞大的,这就会对效率造成一定的影响。;但在很多人的眼中,指针或许会是一个恶梦,使用指针就意味着可能会出现错误,那么就使用引用吧!它既与使用普通值传递一样方便直观,同时又具有指针传递的高效和能力。;当我们在使用循环语句中,应当注意避免过大的循环。
大家看下面两段代码
①for(int i=0;in;i++) ②for(int i=0;in;i++)
{ fun1();
fun1(); for(int i=0;in;i++))
fun2(); fun2();
};以代码的层面上来看,大家是不是觉得代码1的效率更高?因为毕竟代码1少了n次的自加运算和判断,毕竟自加运算和判断也是需要时间的。But,现实真的是这样吗?
这就要看fun1和fun2这两个函数的规模(也就是复杂性)了,如果这几个函数的代码语句很少,则代码1的运行效率高一些,但是若fun1和fun2的语句很多,规模较大,则代码2的运行效率会比代码1显著要高。可能大家不明白这是为什么,这要由计算机的硬件说起。; 啊,这个天杀的计算机硬件问题我也不知道什么鬼,所以上网搜了一下,大家看看了解一下就好了。
由于CPU只能从内存在读取数据,而CPU的运算速度远远大于内存,所以为了提高程序的运行速度有效地利用CPU的能力,在内存与CPU之间有一个叫Cache的存储器,它的速度接近CPU。而Cache中的数据是从内存中加载而来的,这个过程需要访问内存,速度较慢。
这里先说说Cache的设计原理,就是时间局部性和空间局部性。时间局部性是指如果一个存储单元被访问,则可能该单元会很快被再次访问,这是因为程序存在着循环。空间局部性是指如果一个储存单元被访问,则该单元邻近的单元也可能很快被访问,这是因为程序中大部分指令是顺序存储、顺序执行的,数据也一般也是以向量、数组、树、表等形式簇聚在一起的。
;如果fun1和fun2的代码量很大,假如都大于
您可能关注的文档
- 奖惩制度完整版讲述.doc
- 太阳能风冷热泵燃气锅炉联合制热水节能效益分析讲述.doc
- 奔驰ML加装导航系统讲述.pptx
- 精备巧抓,注重实效综述.ppt
- 奥数复习课件讲述.pptx
- 奥数二升三课本讲述.doc
- 奥斯本的分项检查法讲述.pptx
- 奥数-应用题专题—四年级讲述.doc
- 奥迪A4L加装导航系统讲述.pptx
- 奔驰C200加装导航系统讲述.pptx
- 四川省德阳市罗江中学2025届高三考前热身化学试卷含解析.doc
- 山东省枣庄现代实验学校2025届高三下学期第五次调研考试化学试题含解析.doc
- 吉林省长春市十一高中等九校教育联盟2025届高三一诊考试生物试卷含解析.doc
- 2025届江苏省盐城市伍佑中学高考仿真模拟化学试卷含解析.doc
- 2025届广西贺州中学高考冲刺押题(最后一卷)生物试卷含解析.doc
- 安徽省池州市贵池区2025届高三第一次模拟考试生物试卷含解析.doc
- 宁夏银川一中2025届高三(最后冲刺)化学试卷含解析.doc
- 广东省广州市增城区四校联考2025届高考压轴卷化学试卷含解析.doc
- 2025届邯郸市第一中学高考生物必刷试卷含解析.doc
- 2025届安徽省安庆市石化第一中学高考仿真卷化学试卷含解析.doc
文档评论(0)