摘要: 继承和派生这里主要总结一下访问控制的问题。如果class A{};class B:A public/private/protect{};则B是A的子类,于是对于A中的成员按照标号,B中的访问规则是如果在A中是private,则类B中不能访问(初始化时要在初始化列表中调用A的构造函数)如果在A中是protected或者public,则类B中可以访问以上两点是针对在类的内部说的,与继承方式无关。继承方式只影响派生类对象对基类成员的访问:对于private继承,则派生类对象不能访问一切基类成员对于protected继承,则派生类对象不能访问一切基类成员对于public继承,派生类对象不能访问基类的p 阅读全文
posted @ 2012-11-16 01:17 hilbertan 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 这一篇不是笔记。是日记。花了一周读完了STL容器,Generic Algorithm以及几种常见的OO方法。彻底刷一遍C++还是很有好处的。知道了很多新的东西。话说C++果然是个无比庞杂的语言。东西太多了。哪怕你只弄懂其中简单的一部分也能做很多很多事。C++ 11出来了。不过似乎还没有特别多的人在玩。把Primer刷完有空学学Java。心里最大的愿望还是能随心所欲的使用计算机来做Creative的工作。哪怕用它帮我做Analysis.虽然不需要造轮子,但是今后一些API的接口开发要会。最后依然要说的是,C++是一门很优美的语言。 阅读全文
posted @ 2012-11-15 19:17 hilbertan 阅读(129) 评论(0) 推荐(0) 编辑
摘要: @数据分析精选的微博发布了一篇文章,涉及一个条件概率的陈题:独立抛掷一枚硬币,前面次全为正面向上,问第次抛掷正面向上的概率。其实,该文作者并不清楚此题实际上已经很古老了,但是依然洋洋洒洒写了很多字。大致意思就是,传统的严格思路下这个概率应该是,但是在实际处理中如果连续次都正面朝上了,几乎可以断定硬币是非均匀的,因此再抛一次正面向上的概率应该是。 很多人留言说有道理,并说这是理论和实践之间的差别。但细细想一下,这个答案有待商榷。 有一件事是可以肯定的,如果非常大,这个结论几乎可以说是对的,问题是对于任意的都这么说,显然不合理。抛10次硬币全正面向上和抛次硬币全正面向上的情况显然不同,对于后者,我 阅读全文
posted @ 2012-11-09 00:46 hilbertan 阅读(1537) 评论(0) 推荐(0) 编辑
摘要: data过程的一个误区是以为数据集是一起导入的。实际上数据是一个观测一个观测导入的。这期间会产生一个或多个数据指针,也可能产生一个或多个PDV。但data过程在涉及set/merge等语句时本身相当于一个循环过程。因此不谨慎的代码很容易造成冗余的读取操作,甚至可能死循环。set语句格式set<sas-data-set(s)<(data-set-option(s))>><options>;其中sas-data-set(s)是1个到50个的数据集,注意不同于数据集选项,options不需要括号。数据集选项有keep=变量(组)指定读入哪些变量到PDVdrop=变 阅读全文
posted @ 2012-11-07 03:31 hilbertan 阅读(727) 评论(1) 推荐(1) 编辑
摘要: 数组名和指针数组名不是指针,虽然它们太像了。比如#include <iostream>using namespace std;int main(){ int arr[bufSize]={0, 1, 2, 3, 4}; int *p=arr; cout<<p[0]<<'\t'<<p[1]<<endl;for(size_t idx = 0; idx != bufSize; ++idx)cout<<*(arr+idx)<<'\t'<<endl; for(int *p = a 阅读全文
posted @ 2012-10-29 23:14 hilbertan 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 类初步类定义形如1 class Matrix{2 public:3 //operations on Matrix objects will go here4 private:5 vector<double> data;6 };重要的是不要遗忘后面的“;“此外,也可以使用关键词struct替换class定义类。struct从C继承而来,与class的唯一差别在于默认访问标号,struct默认为public,而class默认为private类成员在定义时不能做初始化。只能在对象定义时调用构造函数初始化。注意C++中private封装是对类而不是对对象做的。亦即虽然private成员不能 阅读全文
posted @ 2012-10-25 01:27 hilbertan 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 开篇序言为什么要重新学习C++呢。因为不想留下遗憾。想把过去没有弄懂的,学得半懂不懂的东西彻底弄明白。所以有此笔记。这是C++系列的第一篇,主要谈除掉class以外的类型,通常称为基本类型。C++ Prime Part 1 的序言写得很到位:基本上所有的语言都具有下列特征:1、内置数据类型,如int,char等等2、表达式和语句:表达式和语句用于操纵上述类型的值3、变量:程序员可以使用变量对所使用的对象命名4、控制结构:if/while/for,这些结构可以使语言称为图灵完备的5、函数:可以把行为抽象为可调用的计算单元大多数现代程序设计语言都采用两种方式扩充上述基本特征集:允许程序员自定义数据 阅读全文
posted @ 2012-10-23 18:59 hilbertan 阅读(206) 评论(0) 推荐(0) 编辑
摘要: SAS中只有两种数据类型,字符和数据,没有布尔型。因此要用到时用0和1表示。示例程序:打印1000以内的素数: 1 data _null_; 2 file print; 3 put "Prime Nums in 1 to 1000:"; 4 put "2 " @; 5 do i= 3 to 1000 by 2; 6 IsPrime = 1; 7 do j=3 to sqrt(i); 8 if mod(i,j)=0 then do 9 IsPrime = 0;10 leave;11 end;12 ... 阅读全文
posted @ 2012-10-22 00:59 hilbertan 阅读(377) 评论(0) 推荐(0) 编辑
摘要: SAS可以作为一般高级语言使用输出时可以先设置工具->选项->参数选择,在结果选项卡中勾选生成HTML然后在需要输出的地方加入“file print;”语句,这样使用put的时候就会生成报表。例如:data _null_; a=23; b=34; c=a+b; file print; put "a+b=" c;run; 在作为一般高级语言使用时,如果不需要输出数据,可以在data _null_;run;中编写程序。在不涉及宏的情况下,单引号'和双引号"几乎没有区别,绝大多数情况可以混用(但要匹配)。SAS的复合语句(类似于C/C++中的语句块) 阅读全文
posted @ 2012-10-19 00:51 hilbertan 阅读(1265) 评论(0) 推荐(0) 编辑
摘要: 逻辑库操作:建立:libname MyLib 'd:\sas\Mylib';解除:libname MyLib clear;数据集删除操作:proc delete data=data1 Mylib.data2;run;proc delete data=_all_ Mylib._all_;run; /*recommend!*/proc sql;drop table Mylib.data;run;proc datasets lib = Mylib kill;run;proc datasets lib = Mylib;save;run;proc datasets lib = Mylib 阅读全文
posted @ 2012-10-18 18:22 hilbertan 阅读(250) 评论(0) 推荐(0) 编辑