02 2014 档案

摘要:介绍 Boost状态机库一个应用程序框架,你可以用它将UML状态图快速的转换为可执行的c++代码,而不需要任何的代码生成器。它支持几乎所有的UML特征,可以直接了当的转换,并且转换后的c++代码就像对状态机进行一次文本描述一样具体可读性。如何阅读这个教程 这个教程是以线性阅读的方式进行的章节设计。如果你是第一次看这个教程的话,你可以从头开始读,到你觉得了解的东西对你手头的任务来说已经足够时就停止。具体可以这样: * 如果你的任务是要实现一个小的、简单的,并且有很少几个状态的状态机,那么下面的“初级主题:秒表”里所讲的就差不多够你用的了。 * 如果你要做一个有很多状态... 阅读全文
posted @ 2014-02-28 17:17 zzyoucan 阅读(2710) 评论(0) 推荐(0) 编辑
摘要:std::function 和 std::bind标准库函数bind()和function()定义于头文件中(该头文件还包括许多其他函数对象),用于处理函数及函数参数。bind()接受一个函数(或者函数对象,或者任何你可以通过”(…)”符号调用的事物),生成一个其有某一个或多个函数参数被“绑定”或重新组织的函数对象。(译注:顾名思义,bind()函数的意义就像它的函数名一样,是用来绑定函数调用的某些参数的。)例如: int f(int, char, double); // 绑定f()函数调用的第二个和第三个参数, // 返回一个新的函数对象为ff,它只... 阅读全文
posted @ 2014-02-27 17:04 zzyoucan 阅读(434) 评论(0) 推荐(0) 编辑
摘要:在std::shared_ptr被引入之前,C++标准库中实现的用于管理资源的智能指针只有std::auto_ptr一个而已。std::auto_ptr的作用非常有限,因为它存在被管理资源的所有权转移问题。这导致多个std::auto_ptr类型的局部变量不能共享同一个资源,这个问题是非常严重的哦。因为,我个人觉得,智能指针内存管理要解决的根本问题是:一个堆对象(或则资源,比如文件句柄)在被多个对象引用的情况下,何时释放资源的问题。何时释放很简单,就是在最后一个引用它的对象被释放的时候释放它。关键的问题在于无法确定哪个引用它的对象是被最后释放的。std::shared_ptr确定最后一个引.. 阅读全文
posted @ 2014-02-27 16:07 zzyoucan 阅读(575) 评论(0) 推荐(0) 编辑
摘要:《Boost程序库探秘——深度解析C++准标准库》之试读 前一阵子还看到一篇文章,说C#要重蹈C++的覆辙,这里说的C++的覆辙是什么呢?是指C++语言过于臃肿的功能特性,导致学习人员的流失。文章说,语言最后的威力是“开发软件”,而不是“比拼新特性”在大学中,C++算是比较难学的语言。有些学校试图直接让学生们学习C++,结果效果不怎么好。这次,C++11又添加了大量新特性,如lambda,auto等,把C++弄的像动态语言一样。添加了那么多新特性,而为了照顾用户的习惯和已有的代码。又不能去除一些旧的特性,这样导致了C++越来越臃肿和复杂。记得在哪里看过,好像是塞伯斯塔的程序设计语言一书中说的吧 阅读全文
posted @ 2014-02-27 14:52 zzyoucan 阅读(513) 评论(0) 推荐(0) 编辑
摘要:从C++出来到现在已经13年了。Bjarne Stroustrup(C++的创造者)最近评价C++11:”感觉像个新的语言“。事实上,C++11核心已经发生了很重大的变化:1. 支持Lambda表达式( lambda expressions)2. 对象自动类型推导(automatic type deduction of objects)3. 统一初始化语法(uniform initialization syntax)4. 代理构造(delegating constructors)5. deleted 和defaulted函数声明(deleted and defaulted function d 阅读全文
posted @ 2014-02-27 14:35 zzyoucan 阅读(536) 评论(0) 推荐(0) 编辑
摘要:C++标准库的所有头文件都没有扩展名。C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能。 形式的标准头文件【 例外】其内容与ISO标准C包含的name.h头文件相同,但容纳了C++扩展的功能。在 形式标准的头文件中,与宏相关的名称在全局作用域中定义,其他名称在std命名空间中声明。在C++中还可以使用name.h形式的标准C库头文件名。C++标准库的内容分为10类:C1.语言支持 C2.输入/输出 C3.诊断 C4.一般工具 C5.字符串C6.容器 C7.迭代器支持 C8.算法 C9.数值操作 C10.本地化C1 标准库中与语言支持功能相关的头文件 头文件 描述 .. 阅读全文
posted @ 2014-02-27 14:24 zzyoucan 阅读(1229) 评论(0) 推荐(0) 编辑
摘要:C++ primer 上面的一个例子: // constRef.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"class constRef{public: constRef(int ii); int i; const int ci; int &ri;};constRef::constRef(int ii){ i=ii; ci=ii; ri=i;}//constRef::constRef(int ii):i(ii),ci(i),ri(ii){}int _tmain(int argc, _TCHAR* argv[]){ constRe 阅读全文
posted @ 2014-02-26 23:53 zzyoucan 阅读(5086) 评论(0) 推荐(0) 编辑
摘要:在C程序中包含文件有以下两种方法:(1)用符号“”将要包含的文件的文件名括起来。这种方法指示预处理程序到预定义的缺省路径下寻找文件。预定义的缺省路径通常是在INCLUDE环境变量中指定的,请看下例: INCLUDE=C:\COMPILER\INCLUDE;S:\SOURCE\HEADERS;对于上述INCLUDE环境变量,如果用#include语句包含文件,编译程序将首先到C:\COMPILER\INCLUDE目录下寻找文件;如果未找到,则到S:\SOURCE\HEADERS目录下继续寻找;如果还未找到,则到当前目录下继续寻找。(2)用双引号将要包含的文件的文件名括起来。这种方法指示预处理程序 阅读全文
posted @ 2014-02-26 11:15 zzyoucan 阅读(456) 评论(0) 推荐(0) 编辑
摘要:前几天在图书馆借了一本《游戏程序设计概论》,发现这本书还不错,对游戏有个大概的介绍。学了里面的四方向等高线寻路算法后,把它改成了八方向。大概原理是,从目的点开始向周围一步一步扩展,知道遇到起始点为止。用到了两个队列,一个作为源,一个作为目的。先把目的点放入源队列,在将目的点向八个方向扩展,并放入目的队列,然后交换源与目的,再将源队列中的点向周围扩展,并放入目的队列,如此循环,知道遇到起始点。标记好后,从起始点开始寻找最短路径。程序代码:[复制到剪贴板]CODE:#include #include #include "Queue.h"#define D_MapWidth 15 阅读全文
posted @ 2014-02-25 22:24 zzyoucan 阅读(255) 评论(0) 推荐(0) 编辑
摘要:首先,vector是序列式容器而set是关联式容器。set包含0个或多个不重复不排序的元素。也就是说set能够保证它里面所有的元素都是不重复的。另外对set容器进行插入时可以指定插入位置或者不指定插入位置。如insert(v.begin(),1),也可以直接用insert(1)。还有一点是set对一些操作符没有进行重载,如#include#include#include#includeusingnamespacestd;intmain(void){vectorv;v.insert(v.begin(),1);//如果使用insert(1)不指定插入位置,会出错v.insert(v.begin() 阅读全文
posted @ 2014-02-25 21:51 zzyoucan 阅读(792) 评论(0) 推荐(0) 编辑
摘要:摘要:本文列出几个基本的STL map和STL set的问题,通过解答这些问题讲解了STL关联容器内部的数据结构,最后提出了关于UNIX/LINUX自带平衡二叉树库函数和map, set选择问题,并分析了map, set的优势之处。对于希望深入学习STL和希望了解STL map等关联容器底层数据结构的朋友来说,有一定的参考价值。vector(向量)——STL中标准而安全的数组。只能在vector 的“前面”增加数据。deque(双端队列double-ended queue)——在功能上和vector相似,但是可以在前后两端向其中添加数据。list(列表)——游标一次只可以移动一步。如果你对链表 阅读全文
posted @ 2014-02-25 21:44 zzyoucan 阅读(272) 评论(0) 推荐(0) 编辑
摘要:类型安全很大程度上可以等价于内存安全,类型安全的代码不会试图访问自己没被授权的内存区域。“类型安全”常被用来形容编程语言,其根据在于该门编程语言是否提供保障类型安全的机制;有的时候也用“类型安全”形容某个程序,判别的标准在于该程序是否隐含类型错误。类型安全的编程语言与类型安全的程序之间,没有必然联系。好的程序员可以使用类型不那么安全的语言写出类型相当安全的程序,相反的,差一点儿的程序员可能使用类型相当安全的语言写出类型不太安全的程序。绝对类型安全的编程语言暂时还没有。C语言的类型安全C只在局部上下文中表现出类型安全,比如试图从一种结构体的指针转换成另一种结构体的指针时,编译器将会报告错误,除非 阅读全文
posted @ 2014-02-24 23:05 zzyoucan 阅读(548) 评论(0) 推荐(0) 编辑
摘要:“生成”的时候,只对你改动过的文件重新生成,没有改动过的文件不会重新生成;“重新生成”是对所有的文件都重新生成。以cpp为例,当你只改动某些.cpp之类的文件的时候,可以用生成,省了编译没有改动的那些文件的时间;但是如果你改动了某些.h之类的文件,最好用重新生成,因为有可能有些文件包含.h文件也需要重新编译。.cpp在编译的时候需要,.h在链接的时候需要 阅读全文
posted @ 2014-02-24 10:18 zzyoucan 阅读(549) 评论(0) 推荐(0) 编辑
摘要:今天没干啥事,上午断网了,装MONGO数据库(没装好),经理叫我和另一个同事(带我的同事)改进A*算法,A*算法比较耗资源,经理要求1000个人物,1000个怪物可以同时在线,在客户端怪物寻路可以调用A*算法,但想想服务端这个多的资源和怪物要使用A*算法不行,测试250个人都够呛,我和那个同事不断的... 阅读全文
posted @ 2014-02-20 21:39 zzyoucan 阅读(121) 评论(0) 推荐(0) 编辑
摘要:熟悉了三天代码,今天给我个小任务,不难。公司做游戏,现在貌似是模仿传奇游戏,里面用的数据有点像之前那个做公交系统的公司,但里面的数据远远没有那个复杂。感觉还行,就是我的强迫症有点严重。看了程序用的stl,boost比较多。数据库mongo。应该还行。公司不能登录博客园,不知咋回事。 阅读全文
posted @ 2014-02-18 21:13 zzyoucan 阅读(136) 评论(0) 推荐(0) 编辑
摘要:在学习c++的路上,真心落后了for(auto it_ar : it_s_obj->second->isNearbyPlayer){ //isNearbyPlayer只有玩家 auto it_s_ar = m_player_map.find(it_ar.first); if(it_s_ar == m_player_map.end()) continue; it_s_ar->second.send_attach(atch, objs);}这个auto类似c#里面的var,for循环类型foreach,这个是c++的新特性。std::shared_ptr m_spShare;au 阅读全文
posted @ 2014-02-17 21:34 zzyoucan 阅读(234) 评论(0) 推荐(0) 编辑
摘要:back to c plus plus,明天去看看咋样 阅读全文
posted @ 2014-02-13 20:46 zzyoucan 阅读(103) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示