??xml version="1.0" encoding="utf-8" standalone="yes"?> 1 下蝲OpenCv1.0Q可以在q里下蝲Q?a >http://www.opencv.org.cn/download/OpenCV_1.0.exe 然后文件cxcore100.dll以及安装目录D:\opencv1.0\OpenCV\bin下的highgui100.dllQlibguide40.dll拯到C:\WINDOWS\system32目录下?/strong> 安装OpenCv是一定要NAdd\OpenCV\bin to the systerm PATH 配置VC6.0时要选择用户自己的OpenCv安装路径?/p>
~写OpenCvE序Ӟ要手动添加lib文gQ否则编译不会通过?/strong> 在网上看到很多h都写了自q学期计划Q大多目标都很明。我刚开学的时候思想的很动Q׃一D|_做很多事情效率都很低。到现在已经q去四周的时间了Q经q一些思考,基本上也有了一套学习计划?/span> W一是英语,以前的我没有重视p真是一个大大的错误Q虽然不是很喜欢Q但是每天还是要׃旉学习Q毕竟六U还没有q去Q虽然听说比考试更重要,但是q得需要一个成l来证明q些成果?br />W二是算法,Z后的׃和找工作做好铺垫。要多看一些算法的书籍Q来加强自己在算法方面的不Q数据结构更要努力。有Z一定多读读法Dq边书?br />W三是操作系l,Z需要看看汇~,现在感觉操作pȝ和汇~有着紧密的联p,而且对编E有着事半功倍的效果Q需要仔l看看?br />W四是计机l成原理Q需要m斚w的知识,此外需要深入计机体系l构q边书,是相当的l典Q需要慢慢的ȝ?/span> W四是linuxQ这斚w比较Ơ缺Q所以需要下点功夫?/span> W五?/span>windows~程以及毕业设计相关的东西opencvQ?/span>|络~程博大_深Q需要慢慢的ȝIӞ目标跟踪是我选的题目需要搭hӞ在目标跟t算法进一步作出选择和改q?br />我没有想好去大公司还是刚h的小公司Q只是努力把自己的基搞好Q希望入职的时候可以有一个好的薪_能够未来能养z自q家庭老婆?/span> 比如阶乘数列 1?/span>2?/span>6?/span>24?/span>120?/span>720…… 如果用上面的方式来描q它Q应该是Q?/span> Q程序实?br />int fun(int x) 前几天在博客园看到有人面试时Q遇到递归法题,一时手痒就解了一个。顺便网上又找来几个Q也实现了。给大家分n一下,开阔一下思\Q没准你明天面试p用上?/p>
1、编写一个方法用于验证指定的字符串是否ؓ反{字符Q返回true和false。请用递归法实现。(反{字符串样式ؓ"abcdedcba"Q?/p>
2、一列数的规则如? 1??????3?1?4...... 求第30个是多少 3、一列数的规则如? 1?2?23?234?2345?23456......,求第n个数的递归法Qn<=9Q?/p>
4、将一整数逆序Q如987654321变ؓ123456789?/p>
5?span>一个射击运动员打靶,靶一共有10?q开10枪打?0环的可能行有多少U?
中科院大博士是如何进行文献检索和阅读的(好习惯受益终生)
一.如何q行文献?nbsp;
我是学自然科学的Q^时确实需要不外文文献,对于自然U学来讲英文文献索首推ElsevierQSpringer{。虽然这些数据库里面文献已经不算了。但是有时还会碰到查不到的文献,而这些文献的数据库我们所在研I所或大学又没有乎ͼ怎么办?我基本通过以下向个途径来得到文献?nbsp;
1Q首先在Google 学术搜烦里进行搜索,里面一般会搜出来你要找的文献,在Google学术搜烦里通常情况会出?#8220;每组几个”{字?然后q入后,分别点击Q里面的其中一个就有可能会下到全文Q当然这只是运气,不是万能的,因ؓ我常常碰到这U情况,所以也是得到全文文献的一条途径吧。可以试一下。同?大家有没有发?从Google学术搜烦?q可以得C些信?Google学术搜烦中会昄Z搜烦文章的引用次?不过q个引用ơ数不准?但是从侧面反应了q篇文章的质?l典文章的引用次数绝对很高的.同时如果你用作者进行搜索时,会按引用ơ数出现他写的全部的文章,可以知道作者的哪些文章比较l典,在没有太多时间的情况?可以只看经典的.
2Q如果上面的Ҏ找不到全文,把文章作者的名字或者文章的title在Google 里搜索(不是Google 学术搜烦Q,用作者的名字来搜?是因为我发现很多国外作者都喜欢把文章的全文QPDFQ直接挂在网上,一般情况下他们会把自己的文章挂在自q个h主页Qhome pageQ上Q这样可能也是ؓ了让别的研究者更加了解自q学术领域Q顺便推销自己吧。这样你有可能下到你想要的文献的全文了。甚臛_以下到那个作者相q的内容的其它文章。如果文献是由多个作者写的,W一作者查不到个h主页Q就接上面的Ҏ查第二作者,以此cL。用文章的title来搜?是因为在国外有的|站?例如有的国外大学的图书馆可能会把本校一q或q几q的学术成果的Publication的PDF全文献挂在网?或者在q个大学的ftp上也有可能会有这L似的全文.q样很可能会免费下C惌的全文了.
3Q如果上面两个方法都没有查到你要的文献,那你q接写邮g向作者要。一般情况下作者都喜欢把自q文献l别人,因ؓ他把q些文献l别人,也相当于在传播他自己的学术思想。下面是本h向老外作者要文献的一个常用的模板Q?nbsp;
Dear Professor ×××
I am in ××× Institute of ×××, Chinese Academy of Sciences. I am writing to request your assistance. I search one of your papers:
。。。。。。。。。。。。。。。。。(你的文献题目Q?nbsp;
but I can not read full-text content, would you mind sending your papers by E-mail? Thank you for your assistance.
Best wishes !(or best regards)
×××
本h的经验是讲英语的国家的作者给文章的机率会大,一般你要就会给Q其它不讲英语的国家Q如德国Q法国,日本{国家的作者可能不会给。出于礼?如果你要的文献作者E-maill你?千万别忘记回信致?
4Q最后一U方法其实大安熟悉Q就是发贴在木虫上求助。我q用另一U方法,是直接让我所在的研究所图书馆的理员帮我从外面的图书馆文献传递。不q有的文献可能是要钱的。一?.3元,׃我们看文献的钱都是由N出,所以也׃太考虑q问题了?nbsp;
?如何快速而准地获得最新的U研信息.
如何快速准地从浩如烟L信息h中获取所需的信息,q学会分析、利用信息资源已l成Zh们立于信息C会的一个重要技?提高自己在当今复杂的信息世界中准、快速地获取信息的能?Ҏ们科研h员是臛_重要?我们要时时刻M解最新的U研成果,最主要的途径q是要了解最新的U研文献,但是对于我们常用的数据库,我们又不可能每天都去讉K一ơ数据库来查看是否有最新的文献出来,而对于许多国外的数据?文章的出版效率非帔R,有的是每周出几篇新的文章,有的是每半月Z?q有一月出一ơ的,所以大家发现很难有_֊保持每天都去览数据?但是大家有没有发?国外的数据库有个很好的服务功能就是如果你在其数据库的|站上注册了邮箱,数据库就会自动在每期有新的文章出来时把文章的内容及链接发C的邮里,直接通知?q样对我们获取到最新的信息提供了方?以ElsevierZ,在数据库|站上有"Alerts"点点击进?要求你输?User Name"?Password",q是对已l注册了邮箱的hq行?如果你还没有注册,同样会看到右Ҏ一行英?If not, Register Now. It's FREE and allows you to"q时点击双?Register Now",可以进入进行注?选择你要求的期刊以及你所研究的领域等{?当然q要填好你接受邮件的邮箱,注册成功?以后可以收到最新的文献?同时你可以随时修改你的接受邮件的邮箱.不仅是象Elsevierq样的数据库有这个功?几呼所有的外文数据库都?Email-Alert"q一功能.大家可以试试.
?如何q行文献阅读
其实做科研,不看文献要做好科研,可以说一点可能都没有。只有广看论文,深入学习Q才能厚U薄发,写出响当当的文章出来。读文献一定不要心气w,或者就是想着混个毕业。相反我们要沉下心来Q大量阅L献,在读的过E中有的文献看懂了,但是看不懂的文献也可能会居多。看懂的认真学习借鉴Q看不懂?深入探烦Q实在不行就暂时放下Q过一D|_随着知识和能力的提高慢慢也就弄明白了一些。即使还是看不懂Q但是心里知道有那么回事Qؓ来的l深造做了铺垫。另外千万不要只是ؓ看文献而看文献Q我们看的目的是Z能ؓ我们自己的科研所用,所以看的过E中一定要和你自己的数据相l合Q当看完一文献后Q要好好ȝQ如果用自己的数据,又该怎么栯释。还有一些牛刊物上的文章Q不但要学习文章里面的知识,q要学习牛h写文章的文风。好的文章肯定会有好的文风,q些都是我们来写文章要学习的?nbsp;
另外怿很多搞科研的同行会有个感觉,是看过的文献,如果只是做做标记Q划下划U,q是很容易忘讎ͼq段旉要查询v来也费事。尤其是看过的文献有几百Q上千篇Ӟ虽然可以归类整理Q但效果q是不好?nbsp;
我徏议大家边看一文献时Q边打开word文档Q边整理文章出彩和重要的部分Q然后复制过去,标上文献的标题和作者等相关信息Q把每一cL献归Zl?Ҏ操作单,来要查询和反复的时候会有很大帮助,其在写文章Ӟ相关文献及其亮点都一目了然。这个方法积累久了,Ҏ升写作和阅读都有很大帮助Q除了这P我还有时把一些很l典的段落或都语句翻译成中文Q专门整理在一个本本上Q这样不但在以后写文章时直接拿出来看Q省事省旉Q还能锤D汉互译的能力Q很有利于以后你和老外交流时的口语表达?nbsp;
最?请大家始l记?我们查文献都是ؓ了科?千万不要只查不看,费了那么大劲查到了就一定要看完.q是你大概的看了一下也是有用的.同样对科学问题要辩证的看?文献上别人的观点也只是一家之a,而且不要q信权威.
“ U学本n是hcȝ一U实c科学研I是一个思考过E。科学行动则是推行某U思考过E的zdQ其目的是ؓ了检验这些思考过E的有效性,q而修正和改善q些思考过E,以期辑ֈ最高的认识。像一切科学实践一PU学的判断力取决于个人的l验、信仰和情A?我们中间的许多hQ或者说我们全体Q在我们的专业经历中Q都犯过q样或那L错误。科学工作者应当有虚怀若谷的精,敢于摒弃先入之见Q敢于摆脱对错误思想感情上的依附.
NO.2
q是一位出国留学博士生的学习体会,攑ֈ师生互动栏目里与大家交流、分享?nbsp;
q是我受|上一文章的启发q结合我们专业的特点Q写的一点个Z会,希望对大家有所裨益?nbsp;
要在高v点上开展学术研IӞ阅读英文原文是不可或~的环节。英文文献阅ȝ重要性不需赘述Q国内多数理工科院校的研I已l实C和国际的接轨Q管理和l济学科相对滞后Q但是部分团队已l走在前列?nbsp;
中文文献看多了之后就会发现很多内容似曄识,英文文献在内容的q度和深度方面更胜一{V阅读英文文献的目的不是Z论文增加几个参考文献而看上去好看Q当然国内有些h是这么做的,更有甚者ؓ了增加英文参考文献而引用二手或者三手文献,在{引过E中漏洞癑և。广泛阅读英文文献是提高l合能力及水qI优化知识l构Q{换思维方式Q拓展研I视野的必由之\Q当然最重要的是国际先q和中国实际相结合?nbsp;
Q?Q英文原文读不懂怎么办?
其实我以前也Ҏ没读q原文,也看不懂。这儿有个好办法Q找一本中文经典的书籍Q仅看某一节你感兴或与你相关的内容,然后先找一两篇英文的综qͼreview)认真阅读一下,不会的单词可用金p霸查一查,也许你读W一文章需要花两天Q你q两天再ȝ2遍时Q你也许只要一天;然后你再ȝ2时也许你只要半天!然后你一定会真正发现读英文文献的快感Q(引用部分Q?nbsp;
我和q位作者有相同的体会,刚开始阅ȝ时候可能有些困难,当你l过一个时期的训练之后Q就会很快进入状态,q且感觉受益良多?nbsp;
Q?Q我们需要阅M么样的文献?
虽然英文文献M上水qx较高Q但q不是所有的文献都值得阅读Q阅L献的前提是能够检索到对你有h值的文献。第一步知道如何检索文献,现在学校的英文数据库q_很多Q可以尝试检索和合理利用。当然机器检索不能完全找到和主题相关的文章,需要扩大检索范_然后认真阅读摘要Q筛选和自己工作相关的文献。第二步知道如何定文章的h|q和中文文献阅读h怼之处Q首先是重要期刊的文章,其次是著名学者的文章。例如在国家创新体系领域QLundvall\Freeman\Nalson\OECD\Porter{这些重要的作者和机构的文献是必读的,不仅要精M们的l典文献Q而且要追t其最新研I成果,包括工作论文、讨论稿{。通过寚w要作者的研究和经典文献的阅读能给你打开一扇门Q让你进入一个由核心作者、相关作者、主要期刊和主要研究机构形成的学术网l?nbsp;
Q?Q阅读英文文献需要持之以?nbsp;
英文文献的阅读需要持之以恒。不只是Z写文章或者做目才去索和阅读文献Q而是需要诏I于研究生学习的全过E。这是选题和把握前沉K域的重要途径Q同时也可以提高自己的英文阅读能力。当Ӟ文献阅读的效果不会在短期内显现出来,不能说读了几英文文献就怎么P但是当你把英文文献作Z要阅d象时Q可能会渐渐发生变化?nbsp;
有些中文文献存在不之处Q例如,数据可靠性差、观点(判断Q不可检验;Ҏq用存在~陷Q文献综qC全面{。对于多数社会科学而言我们最l还是要研究中国问题Q中文文献是入门的基Q国内重要期刊的文章仍然需要有一个全面的了解?nbsp;
如果qxd多了Q自然会有感觉,找更高别杂志的文章诅R国外著名的U学家一般都有一个习惯,x周都认真?-2Science, Nature, Cell{高U别文章。这个习惯希望每个h都能保持Q而且Science对中国h是免费的QNature中也有许多内Ҏ免费的,即没有密码之类Q也能得到大量有用的信息呀。床的同志一定要读读The lancet和新英格兰杂志!q两本简直太l典了!
NO.3
如何阅读外文文献Q?nbsp;
本h是学l济?看了大量的外文文?开始时也觉得效率低,不是单词不认?而是看了后面忘了前面.后来摸烦Z一些方?和大家共?
三步?
首先,通读各个标?通常英文文献都很?拿来文献,先把各个标题串一?弄清楚内在的联系.
其次,跌去读各个标题内的内?标注是必不可的,是在必要的D落标示Z者的观点.q是ZW三步做准备.
最?跛_?再把全文串一?Ҏ做好的标C做好阅L?
q样完成了.
【{帖:d文文献的一点体会?nbsp;
PS:一直不会看外文文献Q学学h家?nbsp;
本hp基础不好Q没q六U,所以在士的时候基本上看的外文文献很少Q现在想惛_后悔Q?q的旉学了很多东ѝ上了博士,自己l自q定位也高一些了Q开始打硬着头皮咬着牙很不情愿的也要多看些外文文献,一开始看比较慢,有些很难理解Q到现在大约仔细阅读?00外文文献,泛读?00外文文章,受益匪浅Q现在基本不怎么看中文的了,实也觉得外文的质量是高(也有凑数的烂文章Q,现在自己写外文的也很手了。谈几点自己的体会?nbsp;
1.先找5跟自己论文最相关的外文文章,׃个月的时间认认真真的看,反复看,要求全部LQ不懂的地方可以和同学和老师交流一下。一个月以后你已l上路了?nbsp;
2.如何L题:不要忽视一论文的标题Q看完标题以后想惌是让你写你怎么用一句话来表达这个标题,Ҏ标题推测一下作者论文可能是什么内宏V有时候一句比较长的标题让你写Q你可能q不会表达。下ơ你写的时候就可以借鉴?nbsp;
3.如何L要:快速浏览一遍,q里主要介绍q篇文章做了些什么。也许初看v来不好理解,看不懂,q时候不要气馁,不管它往下看Q等你看完这文章的时候也怽都明白了。因为摘要写的很z,省略了很多前提和条gQ在你第一眼看到摘要而不明白作者意囄时候看不懂是正常的?nbsp;
4.如何daQ前aQ:当你了解了你的研I域的一些情况,看引a应该是一件很Ҏ的事情了Q都是介l性的东西Q写的应该都差不多,所以看文献多了以后看这部分的内容就很快了,一扫而过。有些老外写得很经典得句子要记下了Q下ơ你写就可以用了?nbsp;
5.如何L料及试验Q当你文献看多了以后Q这部分内容也很单了Q无非就是介l试验方法,自己怎么做试验的。很快就能把它看完了?nbsp;
6.如何看试验结果:看结果这部分一定要l合l果中的囑֒表看Q这L的快。主要看懂试验的l果Q体会作者的表达ҎQ例如作者用不同的句子结构描qC些数字的l果Q。有时看完以后再xQ就q么一点结果,别h居然可以大篇q的写这么多Q要是我可能半页p完了Q?nbsp;
7.如何看分析与讨论Q这是一文章的重点Q也是最花时间的。我一般把前面部分看完以后不急于看分析讨论。我会想要是我做出来q些l果我会怎么来写q部分分析与讨论呢?然后慢慢看作者的分析与讨论,仔细体会作者观点,为我所用。当然有时候别人的观点比较斎ͼ分析比较深刻Q偶看不懂也是情理之中。当你看的多了,你肯定会看的来懂Q自qidea来多
8.如何看结论:q个时候看l论׃目了然了Q作后再反过ȝ看摘要,其实差不?nbsp;
9.把下载的论文打印出来Q根据与自己N的相x分三类Q一c要_读Q二c要泛读Q三c要选择性的诅R分别装订在一?nbsp;
10.看完的文献千万不要丢在一边不,3Q?个月一定要温习一遍,可以Ҏ需要,Ҏ自己的试验结果来?nbsp;
11.学会记笔讎ͼ重要的结论,l典的句子,_y的试验方案一定要C来,供参考和学习
12.有些试验Ҏ相同Q结Z同的文献Q可以批判性的阅读。我惌是你自己做试验多的话Q你应该有这个能力判断谁的更对一炏V出现试验方法相同,l论不同的原因有下:试验Ҏ描述不详l,可能Ҏ有差别;试验条g不一P某些作者夸大结果,瞎编数据
13.有时间还是多看点文献吧,最好定个目标:在学术上过自己的老板。因板一般不看文献,他们都是凭经验做事,很多C西他们都不知道,慢慢的你老板会觉得你很厉実?nbsp;
反正我觉得多MQ读h快了,而且也会慢慢喜欢上看外文文献Q收莯然也多了?nbsp;
可能写得有点乱,凑合看吧Q我们一起奋斗!Q!
]]>
]]>
最q在学opencv,先用vc6.0+opencv1.0,可以Ҏopencv论坛上的步骤配置完成Q下面记录了配置q程?/p>
下面是介l如何安装opencv1.0
3 在安装是NAdd\OpenCV\bin to the systerm PATHQ将\OpenCV\bin加入pȝ变量Q?br />4 d环境变量Q右L的电脑,选择属性,点击高选项卡,点击环境变量Q在用户变量下找到pathQ没有的话新建)Q点ȝ辑,在变量值的最后添?nbsp; D:\opencv1.0\OpenCV\binQ然后点ȝ定,重启电脑?br />5 下蝲cxcore100.dll文gQ可在以下网站下载:http://www.codefans.net/dll/download.php?id=1425&type=wj
下面是介绍vc6.0下配|opencv1.0
一 在VC~译器下Q在Project菜单下选择settingQ弹出对话框?br />
1 讄预编译的头文?br />
选择CQCQ+ 【Category】,在下拉菜单中选择PreprocessorQ然后在Additional Include directories 中输入以下几:
C:\Program Files \OpenCV\cv\include (Ҏ本h机器上OpenCV的安装\径进行设|?如在D盘,则写D: Q以下同)
C:\Program Files \OpenCV\otherlibs\highgui
C:\Program Files \OpenCV\cxcore\include(新版本需?
C:\Program Files \OpenCV\otherlibs\cvcam\include
每一条之间用逗号隔开。其中C:\Program Files\Intel\opencv 为OpenCV的安装\径,q是通用的安装\径,最好采用这U设|,以方便大家交;不然Q每ơ都要重新设|\径,比较ȝ?br />
2 讄链接?br />
?Link按键下的 Category下拉菜单中选择 Input选项(指定要连接的库文Ӟ攑ּq接的库文ghao )Q在Additional library path中,输入Q?br />
C:\Program Files \OpenCV\lib
最后在 Setting For下拉菜单中依ơ选择 Win32 Debug?Win32 ReleaseQ分别在Object /library modules 输入Q?br />
cv.lib highgui .lib cxcore.lib cvcam.lib
注意每个库之间用一个空格隔开?br />
或者直接在all configurations中的Object /library modules 输入Qcv.lib highgui.lib cxcore.lib(新版本需? cvcam.lib
Qcxcore.lib highgui.lib 是几乎所有OpenCVE序都要用到的函数库Q分别封装了基本的函数和囑Ş界面接口Qcv.lib中封装了大量的图像处理函敎ͼcvcam.lib中封装了很多针对视频的处理函数Q?br />
当前工程可以用OpenCV的函C?br />
?如果一直要使用OpenCV的函敎ͼ把其路径讄到系l目录下
在Tools 菜单下选择 Options 子菜单,在弹出的对话框中选择DirectoryQ将用到的几个库的\径添加进厅R以后只需所用的库在Object /library modules下输入就可以了,不用再每ơ指定\径?br />
在Show directories for 下拉菜单中选择Include filesQ输入:
C:\Program Files \OpenCV\cv\include
C:\Program Files \OpenCV\otherlibs\highgui
C:\Program Files \OpenCV\cxcore\include(新版本需?
C:\Program Files \OpenCV\otherlibs\cvcam\include
在Show directories for 下拉菜单中选择Library filesQ输入:
C:\Program Files \OpenCV\lib
注意Q(防止每次都拷?dll文gQ?br />
]]>
]]>
]]>
Q?Q?
{
if(x == 1)
return 1;
return n*fun(n-1);
}
(2)扑ևl合?br />扑և从自然数1??#8230;…、n中Q取r个数的所有组合。例如n=5Qr=3的所有组合ؓQ?
Q?Q??? Q?Q??? Q?Q???
Q?Q??? Q?Q??? Q?Q???
Q?Q??? Q?Q??? Q?Q???
Q?0Q???
如何实现呢?
首先分析10个组合,我们可以采用递归来实玎ͼ假设函数为combo(int m,int n);为找到自然数1-m中Q取K个数l合Q当W一个数选定后,后面的k-1个数是从m-1各数中选择得到。我们发现这是m选k个数转换为m-1个数中选k-1个数的组合数。ؓ了解x问题Q我们可以定义个数组AQ数l的W一个元素ؓkQ约定函数将定的k个数字的l合W一个数攑֜A[k]中,当一个组合求出后Q才数lA的一个组合输出,W一个数可以是m-kQ函数将定l合的第一个数攑օ数组后,有两U可能的选择Q因q未到顶l合的其余元素,l箋递归定Q或因一定了组合的全部元素Q输个组合,
具体代码Q?br />//递归求解l合?br />#define MAX 100
int a[MAX];
void combo(int m,int k)
{
int i,j;
for (i = m;i>=k;i--)
{
a[k] = i;
if (k>1)
{
comb(m-1,k-1);
}
else
{
for (j = a[0];j>0;j--)
{
printf("%4d",a[j]);
}
printf("\n");
}
}
}
更多的练习,
A如果Ҏ没有stdafx.h,你ؓ何要包含?一般只有大工程才需要预~译头文?stdafx.h
删除q一?include "stdafx.h"
B project-> Settings->c/c++ category->Precomiled Headers 选择W一?Not using precompiled headers
D?.cpp中的开头加?include "stdafx.h".(#include "stdAfx.h" 攑ֈ另外#include的前面,也就是程序的最前面。用预~译头文仉要把它放到程序最前面Q否则它前面的内容会被忽?
E rebuild all
转蝲Q?br />【N!二进制的解法二?/span>
NQ含有质因数2的个敎ͼq等于N减去N的二q制表示?的数目。我们还可以通过q个规律来求解?/span>
下面对这个规律进行D例说明,假设 N = 11011Q那么N!中含有质因数2的个Cؓ N/2 + N/4 + N/8 + N/16 + …
卻I 1101 + 110 + 11 + 1
=Q?000 + 100 + 1Q?/span>
+Q?00 + 10Q?/span>
+Q?0 + 1Q?/span>
+ 1
=Q?000 + 100+ 10 + 1Q?Q?00 + 10 + 1Q? 1
= 1111 + 111 + 1
=Q?0000 -1Q?Q?000 - 1Q?Q?0-1Q?Q?-1Q?/span>
= 11011-N二进制表CZ1的个?/span>
结
L一个长度ؓm的二q制数N可以表示为N = b[1] + b[2] * 2 + b[3] * 22 + … + b[m] * 2(m-1)Q其中b [ i ]表示此二q制数第i位上的数字(1?Q。所以,若最低位b[1]?Q则说明N为奇敎ͼ反之为偶敎ͼ其除以2Q即{于整个二q制数向低位UM位?/span>
看看stl中默认的allocatorQ?/p>
namespace std {
template <class T>
class allocator {
public:
//type definitions
typedef size_t size_type; //represent the size of the largest object in the allocation model
typedef ptrdiff_t difference_type; //The type for signed integral values that can represent the distance between any two pointers in the
//allocation model
typedef T* pointer;
typedef const T* const_pointer;
typedef T& reference;
typedef const T& const_reference;
typedef T value_type; //The type of the elements
//rebind allocator to type U
template <class U>
struct rebind {
typedef allocator<U> other;
};
//return address of values
pointer address(reference value) const;
const_pointer address(const_reference value) const;
//constructors and destructor
allocator() throw();
allocator(const allocator&) throw();
template <class U>
allocator(const allocator<U>&) throw();
~allocator() throw();
//return maximum number of elements that can be allocated
size_type max_size() const throw();
// allocate but don't initialize num elements of type T
pointer allocate(size_type num,
allocator<void>::const_pointer hint = 0);
// initialize elements of allocated storage p with value value
void construct(pointer p, const T& value);
// delete elements of initialized storage p
void destroy(pointer p);
// deallocate storage p of deleted elements
void deallocate(pointer p, size_type num);
};
}
看了上面的allocatorQ我们已l基本知道他的用处,他一般用在容器中Q作为容器的一个成员,但一般是用模版参C入,q样才可以让我们换成我们自定义的allocator?/p>
vector是动态数l,在堆中分配内存,元素q箋存放Q有保留内存Q如果减大后内存也不会释放。新值大于当前大时才会再分配内存。[]可以使用Q随机插入,删除要慢Q快速的在末插入元素。最重要一点就是它的P代器会失效?br />比如Qtypedef vector IntArray;
IntArray array;
array.push_back( 1 );
array.push_back( 2 );
array.push_back( 2 );
array.push_back( 3 );
// 删除array数组中所有的2
for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor )
{
if( 2 == *itor ) array.erase( itor );
}
q样是不行的Q需要按照下面的实现Q?br /> for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor )
{
if( 2 == *itor )
{
array.erase( itor );
itor--;
}
}
dequeQ与vectorcMQ支持随问和快速插入删除。与vector不同的是Qdequeq支持从开始端插入、删除数?Q[]可以使用Q速度没有vector快。快速的讉K随机的元素。快速的在开始和末尾插入元素Q重新分配空间后Q原有的?br />素不需要备份。对deque排序Ӟ可以先将deque的元素复制到vectorQ排序后在复制到deque
list。只能顺序访问不支持随机讉KQ不存在I间不够
兌容器Q更注重快速和高效的检索数据的能力
setQ快速查找,不允讔R复倹{?br />multiset快速查找,允许重复倹{?br />mapQ一对一映射Q基于关键字快速查找,不允讔R复|key不能重复
multimap一对多映射Q基于关键字快速查找,允许重复?br />容器适配器:对已有的容器q行某些Ҏ的再封装,
stackQ?br />queueQ?br />(1)获取向量中的元素值可用三U方式,直接用向量数l,获得元素引用Q获得元素的指针?br />listQ插入操作和删除操作都不会造成原有的listq代器失效,每次插入或删除一个元素就配置或释放一个元素空_对于M位置的元素插入或删除Qlist永远是常数时间?/p>