自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 资源 (11)
  • 收藏
  • 关注

原创 unordered

散列容器(hash container): 通常比二叉树的存储方式可以提供更高的访问效率.#include #include using namespace boost;散列集合简介: unordered库提供两个散列集合类unordered_set和unordered_multiset,STLport也提供hash_set和hash_multiset,它们的接口,用法与s

2012-11-29 16:46:38 28403 1

原创 boost dynamic_bitset

dynamic_bitset: c++98标准为处理二进制数值提供了两个工具:vector和bitset.vector是对元素类型为bool的vector特化,内部并不真正存储bool值,而是以bit来压缩保存,使用代理技术来操作bit,造成的后果就是它很像容器,大多数情况下的行为与标准容器一致,但它不是容器,不满足容器的定义。 bitset与vector类似,同样存储二进制位,但它的

2012-11-29 16:45:43 7938

原创 array

容器与数据结构: 容器是stl中最引人注意的部分,vector,deque,list,set,map分别实现了最常用的动态数组(向量),双端队列,双向链表,集合和映射五种数据结构,它们以泛型的形式提供可以容纳任意的类型。 boost程序库,实现了数个新型容器(数据结构),如散列容器,循环队列,多维数组等,大大扩展了“容器”概念的内涵和外延 10个容器(数据结构),首先是array,dy

2012-11-26 17:33:34 1146

原创 boost 正确性与测试

boost.assert库增强了原始的运行时assert宏,static_assert库提供了静态断言(编译期诊断),而boost.test库则构建了完整的单元测试框架.assert: boost.assert提供的主意工具是BOOST_ASSERT宏,它类似c标准中的assert宏,提供运行时的断言。#include 基本用法: 默认情况BOOST_ASSERT宏等同于ass

2012-11-26 16:10:40 5625

原创 boost xpressive

xpressive: 正则表达式是处理文本强有力的工具,它使用一套复杂的语法规则,能够解决文本处理领域的绝大多数问题,如验证,匹配,查找,替换等,这些问题用通常的字符串算法是很难甚至无法解决的。 xpressive是一个先进的,灵活的,功能强大的正则表达式库,提供了对正则表达式的全面支持,而且比原正则表达式库boost.regex要好的是它不需要编译,速度快,同时语法又很类似。两种使用

2012-11-22 11:29:29 6543

原创 boost tokenizer

tokenizer: tokenizer库是一个专门用于分词(token)的字符串处理库,可以使用简单易用的方法把一个字符串分解成若干个单词;#includeuning namespace boost; tolenizer类是tokenizer库的核心,它以容器的外观提供分词的序列。类摘要:template, typename Iterator = std::string:

2012-11-22 11:28:50 4894

原创 boost string_algo

string_algo: std::string符合容器的定义,可以把它看做元素类型为char(或wchar_t)的序列容器,可以使用标准算法来对它进行运算。 string_algo库是一个非常全面的字符串算法库,提供了大量的字符串操作函数,如大小写无关比较,修剪,特定模式的子串查找等,可以再不使用正则表达式的情况下处理大多数字符串相关问题。#includeusing namesp

2012-11-16 17:46:25 3030

原创 boost lexical_cast format

Boost中包括五个字符串与文本处理领域的程序库: 【1】两个与c标准库函数功能类似的lexical_cast和format,它们关注与字符串的表示,可以将数值转化为字符串,对输出做精确的格式化。 【2】string_algo库提供了大量常用的字符串处理函数 【3】tokenizer和xpressive,前者是一个分词器,后者则是一个灵活的正则表达式分析器,同时也是一个语法分析器.

2012-11-16 17:45:47 5012

原创 boost uuid

uuid: uuid库是一个小的使用工具,可以表示和生成UUID UUID是University Unique Identifier的缩写,它是一个128位的数字(16字节),不需要有一个中央认证机构就可以创建全国唯一的标示符。别名:GUID uuid位于名字空间boost::uuisd,没有集中的头文件,把功能分散在了若干小文件中,因此为了使用uuid组件,需要包含数个头文件,即:

2012-11-14 09:53:19 1360

原创 boost utility

utility: utility库不是一个有同意主题的Boost库,而是包含了若干个很小但有用的工具BOOST_BINARY: BOOST_BINARY提供一组宏,用于实现简单的二进制常量表示. BOOST_BINARY的定义位于中,也可以通过间接包含。#include 或者#include  它使用boost.preprocessor预处理元编程工具将一组或多组0

2012-11-14 09:52:42 2273 1

原创 boost uuid

uuid: uuid库是一个小的使用工具,可以表示和生成UUID UUID是University Unique Identifier的缩写,它是一个128位的数字(16字节),不需要有一个中央认证机构就可以创建全国唯一的标示符。别名:GUID uuid位于名字空间boost::uuisd,没有集中的头文件,把功能分散在了若干小文件中,因此为了使用uuid组件,需要包含数个头文件,即:

2012-11-12 18:03:09 17163

原创 boost exception

exception: c++98标准定义了标准异常类std::exception及一系列子类,是整个c++语言错误处理的基础. boost.exception库针对标准库中异常类的缺陷进行了强化,提供#include using namespace boost;标准库中的异常:c++98标准中定义了一个异常基类std::exception和try/catch/throw异常

2012-11-12 18:02:22 11819

原创 boost operators

operators: 很多操作符可以从其他的操作符自动推导出来,例如a!=b可以是!(a==b),a>=b可以是!(a 在C++98标准的std::rel_ops名字空间里提供了四个模板比较操作符!=,>,=,只需要为类定义了==和示例:#include #include #include #include #include using namespace bo

2012-11-12 18:01:46 3583

原创 boost tribool

tribool: boost.tribool类似c++内置的bool类型,但基于三态的布尔逻辑:在true和false之外还有一个indeterminate状态(未知,不确定).#include using namespace boost;tribool类内部实现了三态bool值的表示,除了构造函数没有什么其他成员函数,可以再创建tribool对象的同时传入三态bool值对它进行初

2012-11-08 17:28:29 5098

原创 boost swap

swap: boost::swap是对标准库提供的std::swap的增强和泛华,为交换两个变量(可以是int等内置数据类型,或者是类实例,容器)的值提供了便捷的方法.#include 原理:c++标准中的std::swap()//std::swap的典型实现,具体代码依STL版本而不同void swap(T& a, T& b){ T tmp(a); a = b

2012-11-08 17:28:03 3079

原创 boost optional

optional: optional库使用"容器"语义,包装了"可能产生无效值"的对象,实现了"未初始化"的概念.#include using namespace boost;"无意义"的值: 函数并不总能返回有效的返回值,很多时候函数可能返回"无意义"的值,这不意味着函数执行失败,而是表明函数正确执行了,但结果却不是有用的值。 表示返回值无意义最常用的做法是增加一个"哨兵

2012-11-08 17:27:35 16479

原创 boost assign

assign: 许多情况下我们都需要为容器初始化或者赋值,填入大量的数据,比如初始错误代码和错误信息,或者是一些测试用的数据。STL容器仅提供了容纳这些数据的方法,但填充的步骤却是相当地麻烦,必须重复调用insert()或者push_back()等成员函数,这正是boost.assign出现的理由. assign库重载了赋值操作符,operator+=,逗号操作符operator,和括号操

2012-11-08 17:25:01 2308

原创 boost typeof

typeof: typeof库使用宏模拟了c++0x新增加的typeof和auto关键字,可以减轻书写烦琐的变量类型声明的工作,简化代码包含头文件:#include动机:c++是一种静态强类型语言,所有变量在使用前都必须声明其类型,这使得c++具有运行速度快,代码规范等很多优点,但有的时候,这个优点却是麻烦的来源--尤其是c++引入名字空间特性胡--会导致烦琐的类型声明。考

2012-11-06 17:21:52 4251

原创 boost noncopyable

noncopyable: noncopyable允许程序轻松地实现一个禁止复制的类. noncopyable位于名字空间boost,为了使用noncopyable组件,需要包含头文件或者,后者包含了数个小工具的实现:#include 或者#include 在c++中定义一个类时,如果不明确定义拷贝构造函数和拷贝赋值操作符,编译器会为我们自动生成这两个函数.例如:class

2012-11-06 17:21:10 5049

原创 pool库概述

pool库概述: boost.pool库基于简单分隔存储思想实现了一个快速,紧凑的内存池库,不仅能够管理大量的对象,还可以被用做STL的内存分配器。某种程度上讲,它近似于一个小型的垃圾回收机制,在需要大量地分配/释放小对象时很有效率,而且完全不需要考虑delete. pool库包含四个组成部分:最简单的pool,分配类实例的object_pool,单件内存池singleton_pool和可

2012-10-31 16:48:26 2748

原创 智能指针 intrusive_ptr

intrusive_ptr: intrusive_ptr是一个侵入式的引用计数型指针,它可以用于以下两种情形: 【1】对内存占用的要求非常严格,要求必须与原始指针一样; 【2】现存代码已经有了引用计数机制管理的对象。

2012-10-19 17:40:03 1499

原创 智能指针 weak_ptr

weak_ptr: weak_ptr是为了配合shared_ptr而引入的一种智能指针,它更像是shared_ptr的一个助手而不是智能指针,因为它不具有普通指针的行为,没有重载operator*和->,它的最大作用在于协助shared_ptr工作,像旁观者那样观测资源的使用情况.用法: weak_ptr被设计为与shared_ptr共同工作,可以从一个shared_ptr或者另一个w

2012-10-19 17:39:20 28770 2

原创 智能指针 shared_array

shared_array shared_array类似shared_ptr,它包装了new[]操作符在堆上分配的动态数组,同样使用引用计数机制为动态数组提供了一个代理,可以在程序的生命周期里长期存在,直到没有任何引用后才释放内存。 shared_array的接口与功能几乎是与shared_ptr是相同的,主要区别如下: 【1】构造函数接受的指针p必须是new[]的结果,而不能使new表

2012-10-18 17:59:55 1944

原创 智能指针 shared_ptr

shared_ptr: shared_ptr是一个最像指针的"智能指针". shared_ptr与scoped_ptr一样包装了new操作符在堆上分配的动态对象,但它实现的是引用计数型的智能指针,可以被自由的拷贝和赋值,在任意的地方共享它,当没有代码使用(引用计数为0)它时才能删除被包装的动态分配的对象。shared_ptr也可以安全地放到标准容器中,并弥补了auto_ptr因为转移语义而

2012-10-18 16:52:29 16469 1

原创 智能指针 scoped_array

scoped_array: scoped_array的接口和功能几乎是与scoped_ptr是相同的(甚至还有少),主要特点如下: 【1】构造函数接受的指针p必须是new[]的结果,而不能使new表达式的结果; 【2】没有*,->操作符重载,因为scoped_array持有的不是一个普通指针; 【3】析构函数使用delete[]释放资源,而不是delete; 【4】提供oper

2012-10-18 16:51:00 2169

原创 智能指针 scoped_ptr

scoped_ptr: scoped_ptr是一个类似auto_ptr的智能指针,它包装了new操作符在堆上分配的动态对象,能够保证动态创建的对象在任何时候都可以被正确的删除。 特征:scoped_ptr的所有权不能转让。操作函数: scoped_ptr的构造函数接受一个类型为T*的指针p,创建出一个scoped_ptr对象,并在内部保存指针参数p,p必须是一个new表达式动态

2012-10-18 16:49:45 1239

原创 游戏开发基础(十九)

第十九章一种绘制效果通常由以下几部件构成:一个顶点着色器和一个像素着色器,一个需要设置的设备状态列表,一条或多条绘制路径(rendering pass).而且希望采用一种低效运行机制(fallback mechanism)针对不同级别的图形硬件的绘制效果(即,在现在硬件条件下,物尽其用,实现与理想效果尽可能接近的效果),所有的绘制任务都是与某一种效果相关,所以,将这些任务封装到一个单元中时

2012-03-29 12:41:21 2190

原创 游戏开发基础(十八)

第十八章像素着色器(pixel shader)是对每个像素进行光栅化处理期间运行在图形卡GPU上的一段程序.(不同于顶点着色器,Direct3D不会以软件运算方式来模拟像素着色器)像素着色器实质上市取代了固定功能流水线中的多重纹理(multitexturing)环节,而且赋予了直接操作单个像素以及访问每个像素的纹理坐标的能力。这种对像素和纹理坐标直接访问的能力使得能够获得各种各样的特殊效果,例

2012-03-29 12:40:04 976

原创 游戏开发基础(十七)

第十七章顶点着色器(vertex shader)是一段运行在图形卡GPU中的程序,可取代固定功能流水线中的变换和光照环节(当然,不是绝对的,在硬件部支持顶点着色器的情况下,Direct3D运行时就会用软件运算方式来模拟顶点着色器).顶点着色器其实就是用HLSL语言编写的一段定制程序,这样在可实现的图形效果上就获得了很大的灵活性,例,借助顶点着色器,可使用任何可在顶点着色器中实现的光照算法

2012-03-29 12:39:15 985

原创 游戏开发基础(十六)

第十六章高级着色语言:High-Level Shading Language,HLSL顶点着色器和像素着色器就是自行编写的规模较小的定制程序(custom programs),这些定制程序取代固定功能流水线中的某一功能模块,并在图形卡的GPU(Graphics Processing Unit,图形处理单元)中执行,通过这种功能替换,便在实现各种图形效果时获得了巨大的灵活性,也就是说,不再受

2012-03-29 12:38:25 1567

原创 游戏开发基础(十五)

第十五章通常,在屏幕上任意位置点击,点击之后,计算出拾取射线,然后对场景中的每个物体进行遍历,并检测其是否与该射线相交,与射线相交的物体即为用户所拾取的物体拾取步骤:1 给定所点击的屏幕点s,求出它在投影窗口中的对应点p2 计算拾取射线,即自坐标原点发出且通过点p的那条射线3 将拾取射线和物体模型变换至同一坐标系中4 进行物体/射线的相交判断,相交物体即为用户所拾取的屏幕对

2012-03-29 12:37:18 805

原创 游戏开发基础(十四)

第十四章显示粒子时,用点图元(由D3DPRIMITIVETYPE类型的D3DPT_POINTLIST枚举常量表示)是一个很好的选择,但是,光栅化时,点图元将被映射为一个单个像素,这就无法提供很大的灵活性,因为实际应用中可能需要各种尺寸的粒子甚至希望能够对这些粒子进行纹理映射,在Direct3D 8.0之前,要想摆脱点图元的这个限制,只能是不去使用它,那时,程序员都愿意用广告牌技术来显示一个粒子

2012-03-29 12:36:11 999

原创 游戏开发基础(十三)

第十三章地形网格(mesh)其实就是一系列三角形栅格(grid),但是方格中的每个顶点都被赋予了一个高度值(即高度或海拔), 这样该方格就可通过方格对应高度的平滑过渡来模拟自然地形中三脉到三谷的变化,当然,还需要对地形网格应用一些细致的纹理来表现沙滩,绿草如茵的丘陵和雪山用高度图(heightmap)来描述地形中的丘陵和山谷,高度图其实是一个数组,该数组的每个元素都指定了地形方格中某一特定

2012-02-24 18:48:23 999

原创 游戏开发基础(十二)

第十一章用D3DXMatrixLookAtLH函数计算观察矩阵(即取景变换矩阵),当在某一固定地点固定摄像机方位,该函数十分有用,但其用户对于一个能够根据用户输入做出响应的移动摄像机来说,就显得力不从心,用4个摄像机向量:右向量(right vector),上向量(up vector),观察向量(look vector)以及位置向量(position vector)来定义摄像机相对于世界坐

2012-02-23 14:59:00 1105

原创 游戏开发基础(十一)

第十一章ID3DXBuffer接口是一种泛型数据结构,该接口为D3DX库所使用,并可将数据存储在一个连续的内存块中该接口只有两个方法LPVOID GetBufferPointer();返回指向缓存中数据起始位置的指针DWORD GetBufferSize();返回缓存的大小,单位为字节为了保持该接口的通用性,该接口使用了void类型的指针。所以必须由我们来实现被存储的数据类型

2012-02-21 11:53:16 2929 1

原创 游戏开发基础(十)

第十章ID3DXMesh接口继承了其父接口ID3DXBaseMesh的大部分功能ID3DXBaseMesh接口包含有一个顶点缓存(用于存储网格顶点)和一个索引缓存(决定顶点应以何种组合方式构成网格的三角形单元)获取这些接口的指针HRESULT ID3DXMesh::GetVertexBuffer(LPDIRECT3DVERTEXBUFFER9* ppVB);HRESULT ID

2012-02-02 21:07:42 8039 2

原创 游戏开发基础(九)

第九章D3DX库提供接口ID3DXFont,该接口用于在Direct3D应用程序中绘制文本。该接口内部使用GDI在绘制文本,因此该接口在性能上略有损失,然后正是由于该接口使用了GDI,才能够处理一些复杂的字体和格式可用D3DXCreateFontIndirect函数来创建一个ID3DXFont接口对象HRESULT D3DXCreateFontIndirect(    LPDIRE

2012-02-02 13:43:57 1008

原创 游戏开发基础(八)

第八章模板缓存是一个用于获得某种特效的离屏缓存模板缓存的分辨率与后台缓存和深度缓存的分辨率完全相同,所有模板缓存中的像素与后台缓存和深度缓存中的像素是一一对应的模板缓存的功能与模板类似,允许我们动态地,有针对性地决定是否将某个像素写入后台缓存中在Direct3D初始化时,首先必须查询当前设备是否支持模板缓存,如果支持,还必须启用,为了启用模板缓存,必须将绘制状态D3DRS_STEN

2012-01-16 17:55:30 1452

原创 游戏开发基础(七)

第七章融合技术能使我们将当前要进行光栅化的像素与先前已光栅化并处于同一位置的像素的颜色进行合成。即将正在处理的图元颜色值与存储在后台缓存中的像素颜色值进行合成(混合),利用该技术,我们可以获得各种各样的效果,尤其是透明效果。这种将当前计算得到的像素(源像素)颜色值与先前计算所得的像素(目标像素)颜色值进行合成的做法称为融合注意,融合的效果并不局限于普通玻璃类型的透明效果在融合运

2012-01-13 11:15:25 621

原创 游戏开发基础(六)

第六章Direct3D中,纹理用接口IDirect3DTexture9来表示,纹理是类似于表面的一个像素矩阵,与表面不同的是它可被映射到三角形单元中Direct3D所使用的纹理坐标系由沿水平方向的u轴和沿垂直方向的v轴构成,用坐标对(u,v)标识的纹理元素称为纹理元 注意v轴的正方向是竖直向下的Direct3D将纹理坐标做了规范化处理,使之限定在区间[0,1]内D3DFVF_T

2012-01-11 20:43:58 891

VC打印当前调用堆栈

VC中如何打印当前调用堆栈

2012-12-19

模拟windows计算器源码

一个模拟windows计算器的代码,可做为新学者的参考,代码简洁,注释完整

2012-09-14

u盘原理图mw8209

迈科威mw8209电路图,希望对学硬件的朋友有用

2012-04-28

BIOS,硬盘,CPU,网卡,获取计算机硬件信息

计算机硬件信息,BIOS,硬盘,CPU,网卡,等信息的获取

2010-05-31

cmd匿名管道重定向工程

这个是用c++写的一个cmd匿名管道重定向的工程。 希望对学者有很好的指引和修改。

2009-10-21

网络拨号程序同步方式网络拨号程序简单类 可以参考 自己学着写

同步方式网络拨号程序简单类 可以参考 自己学着写同步方式网络拨号程序简单类 可以参考 自己学着写同步方式网络拨号程序简单类 可以参考 自己学着写同步方式网络拨号程序简单类 可以参考 自己学着写

2009-08-20

详解卷TCP-IP详解卷1

详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷详解卷

2009-08-12

局域网 QQ

局域网内进行聊天程序代源码 !

2008-03-24

c++资料

一些简单的c++知识 算法

2008-03-05

航空管理系统

简单的航空管理系统 共学者参考资料

2008-01-09

两个循环单链表合并成一个

实现链表的基本操作基础知识

2008-01-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除