存档

‘心得笔记’ 分类的存档

【笔记迁移】C++Primer笔记 2010/9/9

2012年2月26日  2,356 views 2 条评论

Google的NoteBook这回是真的要没了,以前上学时在NoteBook上做了一些笔记,现在都已经被直接导入到Google Docs里了,因为Google Docs不是那么好访问,现在就将之前的这些笔记都迁移到这里来,现在再看这些笔记,有些自己都有点看不懂了。若有时间的话应该再整理一下。

参加工作半年多了,自从去年9月份开始就没有再更新过这个博客了,若不是前几天域名商发邮件提醒我续费,没准已经将这个博客给遗忘了……唉,生活是艰苦的,工作是忙碌的,无限怀念学生时代啊。

14章重载操作符与转换


1、自增自减操作符重载

自增自减的前缀式与后缀式的区分靠的是参数表中的int参数,这个形参是无用的,它唯一的目的是使后缀函数与前缀函数区分开来。后缀式写这个参数,前缀式没有。
自增自减操作符的后缀式重载时,应与内置操作符一致,返回旧值(即尚未自增或自减的值),并且返回值而不是引用。
示例:

前缀式 ClassType& operator++();

后缀式 ClassType operator++(int); // 一般情况下,后缀式用前缀式实现。


2、调用操作符重载()

定义了调用操作符的类,其对象常称为函数对象(Function Object),即它们是行为类似函数的对象。

struct absInt{
int operator() (int val){
return val<0?-val:val;
}
};
int i=42;
absInt absObj;
unsigned int ui = absObj(i);

3、标准库函数对象调用

标准库函数对象使用时要包含functional头文件,有算术函数对象类型、关系函数对象类型、逻辑函数对象类象,就是各种操作符的函数对象,例如plus<Type> 对应+。
用法:函数对象通常用于覆盖算法使用的默认操作符。如sort默认使用operator<按升序对容器进行排序。
如果要降序排列则可以传递函数对象greater。 示例:

sort(svec.begin(),svec.end(),greater<string>());

标准库函数对象


4、函数对象的函数适配器

函数对象的函数适配器有两类

  • 绑定器(binder),它通过讲一个操作数绑定到给定值而将二元函数对象转换为一元函数对象。有bind1st和bind2nd两个,bind1st将给定值绑定到二元函数对象的第一个实参,bind2nd绑定到第二个实参。
  • 求反器(negator),它将谓词函数对象的真值求反。有not1和not2两个,not1将一元函数对象的真值求反,not2将二元函数对象的真值求反。

示例:

//计算容器vec中所有小于或等于10的元素的个数。bind2nd后面等于 <=10,将二元函数对象变为一元。
count_if(vec.begin(), vec.end(), bind2nd(less_equal<int>(), 10) );

//计算容器vec中所有不是小于等于10的元素,即大于10的元素,not1将bind2nd(less_equal<int>(), 10)的返回值求反。
count_if(vec.begin(), vec.end(), not1(bind2nd(less_equal<int>(), 10) );

5、转换操作符

转换操作符(conversion operator)是一种特殊的类成员函数。它定义将类类型值转变为其他类型值的转换。转换操作符在类定义体内声明,在保留字operator之后跟着转换的目标类型。

通用形式:operator type();//没有返回值类型但是有返回值
这里,type表示内置类型名、类类型名或有类型别名所定义的名字。对任何可作为函数返回类型的类型除void外都可以定义转换函数。
转换函数必须是成员函数,不能指定返回值类型,并且形参表必须为空。
类类型转换之后不能再跟另一个类类型转换。如果需要多个类类型转换,则代码将出错。
转换操作符


分类: 心得笔记 标签: , , ,

Google+批量邀请上线!

2011年8月7日  2,961 views 没有评论

Google+ 以前必须手动添加被邀请用户,有很多网友向我索取过邀请,但是因为各种原因我不能第一时间就回复或者邀请这些朋友。现在就不需要这么麻烦了。Google+ 现在支持通过发送链接来邀请用户了,每个邀请链接可以使用150次,基本上就已经足够了。不过如果超过了150个会怎么样,我现在还不是很清楚。G+用户在点击G+页面右侧的邀请朋友链接后,可以看到在原有的邮件邀请下边出现了一个链接提示,通过发送这个链接来邀请别人参加G+~

下面共享一下我的邀请链接,需要邀请的朋友请点击此链接:https://plus.google.com/_/notifications/ngemlink?path=%2F%3Fgpinv%3DoqQFLWXsnJ0%3A9nzfd2HtxKM

欢迎大家加入G+~

 

ps:最近因为刚刚参加工作,比较忙,很少有时间来更新博客了,而且以后发博文的次数可能也会比较少了……不过我还是会坚持的!

 

 

 

 

 

 

 

分类: 心得笔记 标签: ,

获取简短的Google+主页地址

2011年7月14日  11,803 views 13 条评论

最近,Google+风头正盛,大家都很关注Google+相关的文章。我的上一篇文章《不翻墙访问Google + —— 通过修改Hosts登录Plus》在短短的两天时间内就获得了600+的访问量,超过了上个月10号关于Google主页吉他Doodle的文章《Google 电吉他Doodle源码》。为了点击量,也为了分享我的Google+经历,就有了此文。

对于Google+用户来说,将自己的G+地址分享给别人貌似不是很容易,因为G+主页地址有一串很长的数字,比如我的G+主页地址是:https://plus.google.com/115115080954335173970。你也可以看看你自己的网址是多少,在想获取地址的用户头像上点击右键复制链接地址,就可以看到你自己或别人的G+主页地址了。

现在G+还没有推出段地址或个性域名一说,这点上落后于其它社交网站了。拿国内的Sina微博来说,已经开通了个性域名,大家可以通过 http://weibo.com/codeup 来访问我的Sina微博主页。当然,你可以把自己的G+帐号或者昵称告诉别人让别人手动搜索你,但是,这样难道不显得你太不专业了么!

G+的主页地址非常长,也许你可以用Google的短域名生成器来生成一个goo.gl短域名,比如我的G+主页的Goo.gl版本就是http://goo.gl/ewvC9。好吧,反正我自己都记不住……这一点个性都没有,而且非常不利于记忆。如果你真用这个的话,那我只能说你太不专业了……

我的每篇文章都有N多废话,上面的你可以一个字都不看的……下面开始正题。

一、Gplus.to —— Google Plus Nick

在G+推出不久,这个网站就诞生了,此网站并非Google亲儿子……功能很简单,就是让你注册一个G+主页的个性域名。主页标题旁边很醒目的写着:Make short URL for Google + 。使用方法很简单,在Nick Name下方的输入框里填上你想注册的个性单词,在Google + ID下方的输入框里填上你的Google + ID,也就是你G+主页地址上的那一长串数字。网站上有详细的介绍,一看你就能明白的。点击右方的Add按钮后你就会得到一个以“gplus.to/”开头的网址,斜杠后是你选择的Nick Name,比如我的Gplus地址就是http://gplus.to/codeup。当然,这个Nick Name是不可以重复的,也就是说先到先得……祝你能抢注到想要的Nick Name~

[点此访问Gplus.to]

二、.htaccess —— 站长朋友的福音

上面那个方法优点很明显,快速、方便、域名也比较好记,但是它也有几个缺点,比如你十分想要的Nick Name已经被人抢注了……I’m Sorry,取个生僻的网名还是很有用的……再有就是gplus.to这个网站毕竟是别人的,没准那天就Game Over了,Geek们更希望把命运掌握在自己手里!

综上,如果你是一个站长的话,你管理着一个网站,那么,恭喜你,你将获得一个既可以宣传你网站,又可以分享你的G+主页的方法~修改.htaccess文件。网站中的.htaccess文件控制着目录的访问,我们可以在.htaccess文件中设置一个G+跳转。

先看一下实际效果:本站域名codeup.org,大家可以试着访问codeup.org/+。不出意外的话您将看到我的G+主页https://plus.google.com/115115080954335173970。在我的主机目录中并没有“+”这个目录,此跳转是通过.htaccess控制的。

下面是修改方法:

  1. 登录你的网站后台主机空间,这是主机提供商给你的管理页面,一般为DirectAdmin或者ControlPanel。
  2. 进入文件管理系统,找到并打开.htaccess文件,如果你的网站拥有多个.htaccess文件,只需要修改根目录下的那个就OK了。对于我的网站来说此文件的目录结构是这样的/domains/codeup.org/public_html。此路径视情况不同,你需要自己查找。
  3. 在文件的末尾添加如下代码,保存并退出。OK现在你已经可以通过“yourdomain/+”来访问你的G+主页了~
RedirectMatch ^/\+(.*)$ https://plus.google.com/yourGoogle+ID$1

注意最后在你的Google + ID后面有个“$1”不要漏掉了。
不光可以通过“yourdomain/+”来访问你的G+主页,还可以通过“yourdomain/+/about”来访问G+的个人信息页面,凡是可以加在你的G+主页之后的URL路径,都可以加在“yourdomain/+”之后。

谢谢您的阅读,欢迎访问我的G+,Thanks。

不翻墙访问Google + —— 通过修改Hosts登录Plus

2011年7月11日  34,285 views 30 条评论

最近Google推出了社交类重磅产品Google +,这是一个完全社交化的分享平台。和FaceBook非常类似,是真正意义上的向FaceBook宣战了~

Google + 整合了大量Google应用,比如前一段时间推出的Google +1,老牌的Buzz,还有网络相册Picasaweb。如果你是一个Google爱好者,那么Google + 是你不能错过的!

现阶段Google +还处于测试状态,需要通过邀请才能使用,需要邀请的话可以联系我,留下需要使用的Gmail地址,我会尽快邀请你的。不过因为天朝对于Google的一贯态度……Google +还没有正式发布,就已经被墙了~在天朝,Facebook 活了1980 天,Twitter 活了1055 天,YouTube活了975 天,Google +活了仅仅8 天还是在测试环节……天朝你到底是有多害怕不经你审查的社交平台啊!

长话短说,已经扯了很多没用的东西了。本来可以通过各种翻墙Proxy来访问Google +的,但是在我家里不知道为啥子无法使用自建的Proxy……蛋疼的联通!因此只能另寻方法来访问Google +了……

Google +虽然被GFW墙了,但是Google有些服务器地址并没有被封,我们可以通过修改该Hosts文件来重定向域名到指定的IP上。具体步骤如下:

  1. 找到并打开系统的hosts文件。Windows 7的话路径是在 系统盘:\Windows\System32\drivers\etc 目录下,Windows系列OS应该都处于类似目录下。Linux的话在 /etc/hosts,当然Linux下修改此文件需要root权限。
  2. 在文件末尾添加下方的文字,这些IP截止至本文发表都是可用的,但不保证以后一直可用。如果发现无法访问了,请自行查找可用IP,本文会不时更新这些IP。
  3. 保存Hosts文件。现在你已经可以正常访问plus.google.com了。欢迎访问我的Google +:http://gplus.to/codeup.
#GoogleCode
66.249.89.104 code.google.com

#GooglePlus
203.208.46.29 plus.Google.com
203.208.46.29 talkgadget.google.com

#Picasa
203.208.46.29 picadaweb.google.com
203.208.46.29 lh1.ggpht.com
203.208.46.29 lh2.ggpht.com
203.208.46.29 lh3.ggpht.com
203.208.46.29 lh4.ggpht.com
203.208.46.29 lh5.ggpht.com
203.208.46.29 lh6.ggpht.com
203.208.46.29 lh6.googleusercontent.com
203.208.46.29 lh5.googleusercontent.com
203.208.46.29 lh4.googleusercontent.com
203.208.46.29 lh3.googleusercontent.com
203.208.46.29 lh2.googleusercontent.com
203.208.46.29 lh1.googleusercontent.com

#Docs 12日新增
209.85.225.101 docs.google.com
209.85.225.101 spreadsheets.google.com

Google +还是很给力的,不过现在还在测试中,难免有些Bug,大家可以通过Google +右下角的反馈按钮来帮助Google优化系统。
再次声明:需要邀请的朋友可以通过各种方式联系我,我的联系方式见博客右侧联系我,或者留言此文。谢谢阅读。

Python和C++中洗牌算法Shuffle的实现

2011年6月24日  10,091 views 3 条评论

洗牌,就是将有序的集合中的元素以随机的顺序重新排列。

今天本来是想复习一下几种排序算法的……因为没有随机样本,所以才想着要弄洗牌算法的。以前从来就没有想到过这个问题,今天是头一次接触到打乱顺序的算法。

本文的洗牌算法参考了fuqcool的文章

首先是Python

python语言非常高级,它的标准库已经实现了洗牌函数,在Random模块下有个Shuffle函数。
这是在Random.py中的函数原型。

def shuffle(self, x, random=None, int=int):
	"""x, random=random.random -> shuffle list x in place; return None.

	Optional arg random is a 0-argument function returning a random
	float in [0.0, 1.0); by default, the standard random.random.
	"""

	if random is None:
		random = self.random
	for i in reversed(xrange(1, len(x))):
		# pick an element in x[:i+1] with which to exchange x[i]
		j = int(random() * (i+1))
		x[i], x[j] = x[j], x[i]

阅读全文…

为WordPress博客添加版权声明

2011年6月20日  7,605 views 11 条评论

不做站长不知道,写一篇博文真得挺辛苦的,从构思到码字,还要关心排版等等。我自认为做的不够好,很多篇文章都不是很精美,尤其是语言用词很不好,语文都还给高中老师了……从这篇文章开头写到现在,我已经好几次停下来想怎么用词了……

前面那段就当我胡扯了,大家看看就算了……反正意思就是作者写博文不容易,尤其是工科男T_T。但是在网上,很多博客都是转载别的劳动成果,转载就罢了,你还不说是转载自某某某,这就很不地道了。大家可以看到我的博客里有很多参考了别人的文章,这样的日志我都会在文章末尾附上参考的文章链接。博客里还有一些文章是完全转载了别人的我文章,这样的日志我都会在标题中添加转载字样,而且在文章开头就附上原始链接。

我个人认为我的这种注释参考的方式很不错,既体现了自己的劳动,也点出了原作者的贡献。大家如果也觉得合适的话可以跟我一样做。

不过在转载别人文章的时候我们并不能确定原作者是否同意我们转载,因为文章中并没有说明此文是否可以转载使用,如果转载的话是否可以修改原文,如果每次都Email联系的话也确实很麻烦,所以在文章中直接写上版权信息是个不错的选择。

大家可以到这篇文章的末尾看一下,有一段声明信息,本博客的每一篇日志都有这么一段声明。现在我就把如何实现的写在下面,大家想用的话可以直接拿去,不过我建议还是做一下修改,换换用词什么的,我写的太差了……

首先,这段版权声明的实现是通过修改WordPress主题文件实现的,纯手工完成,主要修改的是主题中的single.php文件。一般的主题都会包含此文件的,在合适的位置添加如下代码:

<!-- 版权声明开始 -->
	<?php include(TEMPLATEPATH."/copyright.php");?>
<!-- 版权声明结束 -->

阅读全文…