对C++库函数进行学习探索总结笔记

C++库函数作为一个高效的.NET程序语言。其混合了函数语言和物件导向程序编制语言,并且***的适用于编程、算法、技术和探索性开发,因此可以在使用的过程当中感受到趣味性和吸引力。

创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于网站设计、成都网站制作、茄子河网络推广、小程序设计、茄子河网络营销、茄子河企业策划、茄子河品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供茄子河建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

rand()产生“伪随机数”的原理是:给定数x(如果调用者未指定,则使用默认值),通过固定的计算公式1返回一个数y,这个数y就是所谓的伪随机数;同时通过固定的计算公式2,修改x,这样下次调用rand()时就会得到一个新的y。通过上面这两步,反复调用rand()会得到一个所谓的“伪随机数”的序列。

因为两个计算公式是固定的,所以只要X1相同,那么产生的序列就相同。X1成为种子,seed。
如果调用者不指定种子,C++语言的rand()会使用默认值。设置种子使用srand(unsigned int)函数,这个函数的名字的***个字母s就是seed的意思。

因为时间的唯一性和一维性,所以可以用系统时间来作为种子。这样可以保证每次运行时,rand()产生的序列都是不同的。在使用rand()前,以如下方式设置种子即可,
srand((unsigned int) time(0));

下面是《C Programming Language》中给出的rand()和srand()的一种实现,可能是早期C++的库函数的实现。

 
 
 
  1. int rand(void) {  
  2.   nextnext = next * 1103515245 + 12345;  //修改next的值  
  3.   return (unsigned int) (next/65536) % 32768;  //得到伪随机数在0~32768之间  
  4. }  
  5.  
  6. void srand(unsigned int seed) {  
  7.   next = seed;   //设置种子  

也就是说,随便你拿起哪本C++书籍(包括很多被人们广泛称为“必读经典”的),那么有很大的可能这本书中的内容不是你应该学的,而是你不应该学的。我之所以这么说有两个原因,因为一,我曾经是受害者。二,也是更实质性的原因,这些所谓的必读经典。

充斥的是介绍C++中的陷阱和对于C++库函数的缺陷的各种workarounds(好听一点叫Idioms(惯用法)或techniques(技术));又因为C++中的这类陷阱和缺陷实在数不胜数,所以就拉出了一个“长尾”;这类书籍在所有语言中都存在(“C缺陷和陷阱”、“Effective Java”、“Effective C#”等等)。#t#

然而在C++库函数里面这个尾巴特别长,导致这类书数不胜数。三,这些书中列出来的缺陷和陷阱根本不区分常见程度,对于一个用本程序员来说,应该希望看到“从最常见的问题到最不常见的问题”这样的顺序来罗列内容,然而这些书里面要么全部混在一起。

要么按照“资源管理、类设计、泛型”这样的技术分类来介绍内容,这根本毫无帮助(如果我看到一个章节的内容,我当然知道它讲的是类设计还是资源管理,还用废话么?),使得一个学习者无法辨别并将最重要的时间花在最常见的问题之上。

网站标题:对C++库函数进行学习探索总结笔记
文章分享:http://www.hantingmc.com/qtweb/news15/36565.html

成都网站建设公司_创新互联,为您提供自适应网站品牌网站设计商城网站小程序开发用户体验全网营销推广

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联