自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

超越

寻找心中的那份自信

原创 [Boost基础]并发编程——Thread多线程(三)

线程组 thread库提供类thread_group用于管理一组线程,就像是一个线程池,它内部使用std::list来容纳创建的thread对象。成员函数有:and_thread(),remove_thread(),join_all(),interrupt_all() 条件变量 条件变量时t...

2013-01-31 20:17:33

阅读数 1467

评论数 0

原创 [Boost基础]并发编程——Thread多线程(二)

操作线程 thread类还提供了3个很有用的静态成员函数yield(),sleep(),hardware_concurrency() yield()函数指示当前线程放弃时间片,允许其他的线程运行;暂停当前正在执行的线程对象,并执行其他线程(注意:这里的其他包括当前线程) sleep()让线程...

2013-01-30 21:09:18

阅读数 2056

评论数 0

原创 泛型编程——模板机制

C++软件重用的体现 1.面向对象的思想:继承和多态,标准类库 2.泛型程序设计的思想:模板机制,标准模板库STL 泛型程序设计 泛型程序设计,简单地说就是使用模板的程序设计法。将一些常用的数据结构(eg:链表,数组,二叉树)和算法(eg:排序,查找)写成模板,以后则不论数据结构里面放的是...

2013-01-30 13:29:49

阅读数 1021

评论数 0

原创 [Boost基础]并发编程——Thread多线程(一)

并发编程 并发编程:C++中没有语言级别的并发支持,因为在C++诞生很久以后线程等用于并发操作的概念才出现(POSIX线程标准制定与1955年)。但在现在随着拥有多CPU,多内核的计算机的大量出现,C++特别是C++标准没有定义并发操作的规范就显得有些过时了。并发编程是一个很广泛的话题,同时又是一...

2013-01-28 20:30:59

阅读数 4759

评论数 1

原创 [STL基础]算法

算法简介 STL中提供能在各种容器中通用的算法,比如插入,删除,查找,排序等。大约有70中标准算法。 算法就是一个个函数模板算法通过迭代器来操作容器中的元素。许多算法需要两个参数,一个是起始元素的迭代器,一个是终止元素的迭代器。比如,排序和查找有的算法返回一个迭代器。比如find()算法,...

2013-01-27 18:09:58

阅读数 1226

评论数 0

原创 [STL基础]函数对象

函数对象:是个对象,但是用起来看上去像函数调用,实际上也执行了函数调用 函数对象:调用操作符的类,其对象常称为函数对象,即它们是行为类似于函数的对象。它是通过重载类的operator()来实现的。eg:对于 double d=average(3,2,3);中的average可以使普通函数,也可...

2013-01-27 16:42:18

阅读数 841

评论数 0

原创 [STL基础]pair组对单位模板类

pair模板类用来绑定两个对象为一个新的对象,该类型在头文件中定义 pair模板类支持如下操作 pair p1:创建一个空的pair对象,它的两个元素分别是T1和T2类型,采用值初始化pari p1(v1,v2):创建一个pair对象,它的两个元素分别是T1和T2类型,其中first成员初...

2013-01-27 15:30:58

阅读数 1286

评论数 0

原创 [STL基础]Iterator迭代器

迭代器基本操作 用于指向第一类容器(顺序容器(vector,deque,list)和关联容器(set,multiset,map,multimap))中的元素。有const和非const两种通过迭代器可以读取它指向的元素,通过非const迭代器还能修改其指向的元素。迭代器用法和指针类似定义一个...

2013-01-26 02:40:30

阅读数 1707

评论数 0

原创 [Boost基础]函数与回调——function函数

/*function是一个函数对象的“容器”,概念上像是C++中函数指针类型的泛化, 是一种“智能函数指针”。它以对象的形式封装了原始的函数指针或函数对象, 能够容纳任意符合函数签名的可调用对象。因此可以用于回调机制, 暂时保管函数或函数对象,在之后需要的时机再调用,使回调机制拥有更多的弹性。 f...

2013-01-23 20:57:54

阅读数 2595

评论数 0

原创 [Boost基础]函数与回调——bind绑定

#pragma once #include #include #include #include #include #include using namespace std; using namespace boost; //bind是C++98标准库中函数适配器bind1s...

2013-01-22 23:39:53

阅读数 1899

评论数 0

原创 [Boost基础]函数与回调——ref引用

库ref在boost/ref.hpp中提供了模板工厂函数boost::ref,boost::cref分别对应包装引用和常引用。 当在某些情况下需要拷贝对象参数,如果该对象无法进行拷贝,或者拷贝代价过高,这时候就可以选择ref。  #pragma once #include #include...

2013-01-22 11:23:56

阅读数 1120

评论数 0

原创 [Boost基础]函数与回调——result_of返回函数的返回值类型

函数与回调 函数与回调时Boost中较为高级复杂的组件,应用了C++中高级的语言特性和技巧,功能很强大,相应的用法也比较复杂,灵活,不太容易理解和掌握。 Result_of:使用了复杂的技巧来自动推导函数的返回值类型Ref:可以包装对象的引用,在传递参数时消除对象拷贝的代价,或者将不可拷贝...

2013-01-21 19:54:57

阅读数 1705

评论数 0

原创 [Boost基础]时间日期——timer计时器

日期时间 C++一直以来缺乏对时间和日期的处理能力,而时间和日期又是现实生活中经常遇到的,C++程序员不得不求助于C,使用笨拙的结构和函数(struct tm,time())。而现在Boot使用timer和date_time库完美的解决了这个问题。 Timer是一个很小的库,提供简易的度量时间...

2013-01-18 19:10:11

阅读数 2345

评论数 0

原创 [STL基础]multiset多重集合

网上实例  #include #include #include #include using namespace std; //multiset多重集合与set集合的区别:multiset可以拥有多个相同的元素,而set中的元素是唯一的。由此,其函数的不同:erase()参数是元...

2013-01-18 15:06:51

阅读数 1224

评论数 0

原创 [C++基础]C++4个转型操作符——数据类型转换

static_cast:静态类型转换。编译器在编译期处理;用于基本数据类型之间的转换。 dynamic_cast:动态类型转换。运行期间确定类型;用来执行继承体系中“安全的向下转型或跨系转型动作”. 参见 const_cast:常量类型转换。编译器在编译期处理;把cosnt或volatile属...

2013-01-18 13:42:47

阅读数 1108

评论数 0

原创 [STL基础]set集合

网上实例 #include #include #include #include using namespace std; /* set和multiset的内部结构通常是由平衡二叉树来实现的。当元素放入容器中时,会按照一定的排序法则自动排序,默认是按照less<>排序规...

2013-01-18 01:25:47

阅读数 2346

评论数 0

原创 [Boost基础]字符串和文本处理——lexical_cast词汇转换

字符串和文本处理 字符串与文本处理一直是C++的弱项,虽然C++98标准提供了一个标准字符串类std::string,暂缓燃眉之急,但C++仍然缺乏很多文本处理的高级特性,如正则表达式,分词等等,使得不少C++程序员不得不转向其他语言(eg:python)。 Boost填充了C++这方面的空白...

2013-01-17 20:06:50

阅读数 1576

评论数 0

原创 [Boost基础]容器数据结构——array定长数组

容器  Array:STL风格封装下的定长数组Multi_array:多维数组的容器和适配器Bimap:双向map列,使用boost.bimap,你可以创建两个类型都可作为键值的关联容器。Circular_buffer:一个STL兼容的容器,也被广泛称为环缓冲区或循环缓冲区。Dynamic_...

2013-01-16 20:54:34

阅读数 1615

评论数 0

原创 [STL基础]multimap多级映射

multimap与map的不同就是:multimap允许关键字key重复,multimap不允许用数组的方式进行赋值     网上实例 #include #include #include #include using namespace std; //定义及初始化;没有返回值...

2013-01-15 18:54:51

阅读数 1779

评论数 0

原创 [STL基础]map映射,hash_map

关联容器,通过 键 存储和读取元素。顺序容器,通过元素在容器中的位置顺序存储和读取元素。 关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。  map映射 map是标准关联式容器之一,map是一个键值对序列,即(key,...

2013-01-14 21:10:58

阅读数 1436

评论数 0

原创 [Boost基础]Boost概述

Boost概述 Boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化。不过对比STL,boost更加实用。STL集中在算法部分,而boost包含了不少工具类,可以完成比较具体的工作。 Boost中比较有名气的库有:regex(正则表达式)...

2013-01-14 17:02:04

阅读数 1154

评论数 0

原创 [设计模式]设计模式总结

引言 设计模式是软件工程的基石。只有精通了设计模式,才敢说真正理解了软件工程。可以说,设计模式是每一个架构师所必备的技能之一。 设计模式的起源是面向对象程序设计思想,而面向对象设计的精髓是——抽象。面向对象通过类和对象来实现抽象,实现时产生了面向对象的三个重要机制:封装,继承,多态。正是这三个...

2013-01-14 01:12:06

阅读数 1854

评论数 7

原创 [设计模式]Iterator迭代器模式

问题 iterator模式应该是最为熟悉的模式了,最简单的证明就是在实现Composite模式,Flyweight模式,Observer模式中就直接用到了STL提供的Iterator来遍历Vector或者List数据结构。 Iterator模式也正是用来解决对一个聚合对象的遍历问题,将对聚合的...

2013-01-13 19:23:20

阅读数 1016

评论数 0

原创 [设计模式]Singleton单例模式

singleton单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 Singleton模式其实是对全局静态变量的一个取代策略,singleton模式的两个作用在C++中是通过如下的机制实现的: 仅有一个实例,提供一个类的静态成员变量,类的静态成员变量对应类的所有对象而...

2013-01-11 20:51:39

阅读数 3162

评论数 0

原创 [设计模式]Decorator装饰者模式

问题 在OO设计和开发过程中,可能会经常遇到以下情况:我们需要为一个已经定义好的类添加新的职责(操作),通常的情况我们会给定义一个新类继承自定义好的类,但是通过继承的方式解决这样的情况带来了系统的复杂性,因为继承的深度会变得很深。例如我们对手机进行装饰,买了一个新的手机,先贴个钢化膜。在带一个壳...

2013-01-11 19:43:53

阅读数 1215

评论数 0

原创 [设计模式]Interpreter解释器模式

Interpreter解释器模式 通常当一个语言需要解释执行,并且你可以将该语言的句子表示成为一个抽象的语法树时,可以使用解释器模式 解析 1)context:包含解释器之外的一些全局信息 2)AbstractExpression:抽象基类,声明一个抽象的解释操作,这个接口为抽象语法树...

2013-01-11 18:41:37

阅读数 1298

评论数 0

原创 [设计模式]Factory工厂模式

Factory工厂模式 很多资料也称FactoryMothed(工厂方法)主要用于创建对象。新添加类时,不会影响以前的系统代码。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。 Product:创建出来的对象的抽象基类 Factory:...

2013-01-11 17:34:20

阅读数 1163

评论数 0

原创 [设计模式]AbstractFactory抽象工厂模式

问题 假设我们要开发一款游戏,当然为了吸引更多的人玩,游戏难度不能太高但是也不能太简单。于是我们就可以采用这样一种处理策略:为游戏设立等级,初级,中级,高级甚至BT级。假设也是过关的游戏,每个关卡都有一些怪物守着,玩家要把这些怪物干掉才可以过关。作为开发者,我们就不得不创建怪物的类,然后初级怪物...

2013-01-10 21:00:09

阅读数 1080

评论数 0

原创 [设计模式]ChainOfResponsibility责任链模式

顾名思义,责任链模式是一条链,链上有多个节点,每个节点都有各自的责任。当有输入时,第一个责任节点看自己能否处理该输入,如果可以就处理。如果不能就交由下一个责任节点处理。依次类推,直到最后一个责任节点。 问题 熟悉VC/MFC的都知道,vc是”基于消息,事件驱动”,消息在vc开发中起着举足轻重的...

2013-01-10 20:09:32

阅读数 2674

评论数 0

原创 [STL基础]顺序容器

容器 同一种类型对象的集合。这些容器的共有成员函数:empty()判断容器中是否有元素,max_size()容器中最多能装多少元素,swap()交换两个容器的内容。 比较两个容器大小的运算符:=,,>=,==,!= 1.若两容器长度相同、所有元素相等,则两个容器就相等,否则为不等。...

2013-01-10 15:50:44

阅读数 895

评论数 0

原创 [设计模式]Prototype原型模式

prototype原型模式 用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。    小demo prototype.h #ifndef PROTOTYPE_H #define PROTOTYPE_H // 虚拟基类,所有原型的基类,提供Clone接口函数 class Prot...

2013-01-09 20:51:05

阅读数 1333

评论数 0

原创 [设计模式]Facade外观模式

问题 举一个生活中的小例子,大凡开个学或毕过业的都会体会到这样一种郁闷:你要去n个地方办理n个手续。但是实际上我们需要的就是一个最后一道手续的证明而已,对于前面的手续是怎么办的,到什么地方办理我们都不感兴趣。 facade外观模式 为子系统的一组接口提供一个一致的界面, 使用户使用起来更加方便。 ...

2013-01-09 20:14:39

阅读数 1419

评论数 0

原创 [设计模式]Proxy代理模式

proxy代理模式 笔者看到这个模式就联想到了代理商。我们客户买东西一般都是经过代理商的,代理商和真正的生成产品的公司进行对接,因为代理商有钱嘛可以搞垄断赚差价嘛。其实在软件设计中的代理模式和我们现实生活中很类似。在设计模式中,我们的代理模式是这样的,客户端并不能直接访问真正的主题对象,只能通过...

2013-01-09 19:43:15

阅读数 1090

评论数 0

原创 [设计模式]Adapter适配器模式

Adapter适配器模式 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 通俗的说就是,A类想调用B类的方法,只能通过创建适配器的方法来调用;结合代码来说就是,目标类想调用被适配者类的方法,是通过适配者类来调用的。 ...

2013-01-09 19:17:38

阅读数 919

评论数 0

原创 [设计模式]Bridge桥接模式

Bridge桥接模式 桥接模式一种结构型模式,它主要应对的是:由于实际的需要,某个类具有两个或以上的维度变化,如果只是用继承将无法实现这种需要,或者使得设计变得相当臃肿。 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 优点 分离抽象接口及其实现部分。桥接模式使用“对象间的关联关系...

2013-01-08 20:42:17

阅读数 1092

评论数 0

原创 [STL基础]栈、队列、优先队列之用法

栈、队列、优先队列 栈stack    网上实例 队列queue    网上实例 优先队列priority_queue   网上实例 #include #include #include #include #include using namespace std; //栈s...

2013-01-08 18:20:01

阅读数 2532

评论数 0

原创 [STL基础]双端队列deque之用法

deque   上网实例 list的函数共有五大类:定义及初始化,增加删除元素,访问元素,返回迭代器,其他  #include #include #include #include using namespace std; //定义及初始化;无返回值或void void PrintDeq...

2013-01-07 23:25:00

阅读数 1413

评论数 0

原创 [STL基础]双向链表List之用法

list网上实例  list的函数共有五大类:定义及初始化,增加删除元素,访问元素,返回迭代器,其他 #include #include #include #include #include using namespace std; void PrintListInt(list&...

2013-01-07 02:10:41

阅读数 2607

评论数 1

原创 [STL基础]线性表vector之用法

Vector 网上教程有实例的 vector的函数共有五大类:定义及初始化,增加删除元素,访问元素,返回迭代器,获取设置长度容器  #include #include #include #include using namespace std; //定义及初始化;返回void或无返...

2013-01-06 03:14:14

阅读数 1397

评论数 0

原创 [设计模式]Builder建造者模式

builder建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 Builder:这个基类是全部创建过程的抽象,提供构建不同组成部分的接口函数 ConcreteBuilder:是对一个对象不同部分的构建函数接口,Builder的派生类来具体实现。 D...

2013-01-05 19:17:57

阅读数 1071

评论数 0

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