Boost编程
文章平均质量分 78
ouyangshima
找到心中的那份自信
技术不牢,地动山摇
展开
-
[Boost基础]函数与回调——function函数
/*function是一个函数对象的“容器”,概念上像是C++中函数指针类型的泛化,是一种“智能函数指针”。它以对象的形式封装了原始的函数指针或函数对象,能够容纳任意符合函数签名的可调用对象。因此可以用于回调机制,暂时保管函数或函数对象,在之后需要的时机再调用,使回调机制拥有更多的弹性。function可以配合bind使用,存储bind表达式的结果,使bin可以被多次调用。*/...原创 2013-01-23 20:57:54 · 3096 阅读 · 0 评论 -
[Boost基础]正则表达式库——regex
#include #include #include #include #include //regex库//正则表达式库boost.regex,正则表达式大大减轻了搜索特定模式字符串的负担,在大多数语言中都是强大的功能。Boost.Regex库中两个最重要的类是boost::regex和boost::smatch,它们都做boost/regex.hpp文件中定义。前者用于定义原创 2013-03-02 12:37:07 · 2057 阅读 · 1 评论 -
[Boost基础]Boost概述
Boost概述 Boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化。不过对比STL,boost更加实用。STL集中在算法部分,而boost包含了不少工具类,可以完成比较具体的工作。Boost中比较有名气的库有:regex(正则表达式),spirit,graph(图组件和算法),lambda,concept check,mpl,th原创 2013-01-14 17:02:04 · 1555 阅读 · 0 评论 -
[Boost基础]内存管理——智能指针(一)
内存管理内存管理一直是令C++程序员最头疼的工作,C++继承 C那高效而又灵活的指针,使用起来稍微不小心就会导致内存泄露,“野”指针,访问越界等问题。曾几何时,C++程序员曾经无限的向往Java,C#等语言的垃圾回收机制。虽然C++标准提供了智能指针std::auto_ptr,但并没有解决所有问题。计算机系统中资源有很多种,内存是我们最常用到的,此外还有文件描述符,socket,操作系原创 2013-02-28 12:52:40 · 1423 阅读 · 0 评论 -
[Boost基础]内存管理——智能指针(二)
#include <iostream>#include <string>#include <conio.h> //1.作用域指针//它独占一个动态分配的对象,对应的类名为boost::scoped_ptr,定义在boost/scoped_ptr.hpp中。//不像std::auto_ptr,作用域指针不能传递它所包含的对象的所有权到另一个作用域...原创 2013-03-01 21:04:18 · 1437 阅读 · 0 评论 -
[Boost基础]内存管理——内存池pool库
内存池"池"是计算机技术中经常使用的一种设计模式,其内涵在于:将程序中需要经常使用的核心资源先申请出来,放到一个池内,由程序自己管理,这样可以提高资源的使用效率,也可以保证本程序占用的资源数量。经常使用的吃技术包括内存池,线程池,连接池等。其中以内存池和线程池使用最多。内存池:简单来说,内存池预先分配了一块打的内存空间,然后就可以在其中使用某种算法实现高效快速的自定制内存分配。pool原创 2013-08-21 19:16:24 · 2049 阅读 · 0 评论 -
[Boost基础]并发编程——Thread多线程(一)
并发编程并发编程:C++中没有语言级别的并发支持,因为在C++诞生很久以后线程等用于并发操作的概念才出现(POSIX线程标准制定与1955年)。但在现在随着拥有多CPU,多内核的计算机的大量出现,C++特别是C++标准没有定义并发操作的规范就显得有些过时了。并发编程是一个很广泛的话题,同时又是一门很复杂的技术。Boost中有两个用于并发编程的组件。首先是thead库:它为C++增加了可移植原创 2013-01-28 20:30:59 · 6306 阅读 · 1 评论 -
[Boost基础]并发编程——asio网络库——同步socket处理
网络通信简述asio库支持TCP,UDP和ICMP通信协议,它在名字空间boost::asio::ip里提供了大量的网络通信方面的函数和类,很好的封装了原始的Berkeley Socket API,展现给asio用户一个方便易用且健壮的网络通信库。ip::tcp类是asio网络通信(TCP)部分主要的类,但它本身并没有太多的功能,而且定义了数个用于TCP通信的typedef类型,用来协原创 2013-08-29 01:38:05 · 3671 阅读 · 1 评论 -
[Boost基础]并发编程——asio网络库——定时器deadline_timer
asio库基于操作系统提供的异步机制,采用前摄器设计模式(Proactor)实现了可移植的异步(或者同步)IO操作,而且并不要求使用多线程和锁定,有些的避免了多线程编程带来的诸多有害副作用(如条件竞争、死锁等)。目前asio主要关注网络通信方面,使用大量的类和函数封装了socket API,提供了一个现代C++风格的网络编程接口,支持TCP,ICMP,UDP等网络通信协议。但asio的异步操作原创 2013-08-28 23:56:23 · 3927 阅读 · 0 评论 -
正则表达式的使用(C++)
#include #include #include using namespace std;void Regex(){ const char* text="#87655#23432#43354#456#";//开头,结尾 const char* pRegexStr ="^[#][0-9]//+[#][0-9]//+[#][0-9]//+[#][0-9]//+[#]{1}quot原创 2011-04-28 16:45:00 · 1552 阅读 · 0 评论 -
[Boost基础]函数与回调——result_of返回函数的返回值类型
函数与回调函数与回调时Boost中较为高级复杂的组件,应用了C++中高级的语言特性和技巧,功能很强大,相应的用法也比较复杂,灵活,不太容易理解和掌握。Result_of:使用了复杂的技巧来自动推导函数的返回值类型Ref:可以包装对象的引用,在传递参数时消除对象拷贝的代价,或者将不可拷贝的对象变为可以拷贝Bind:是C++98标准库中函数适配器的增量,可以适配任意的可调用对象,包括函数指原创 2013-01-21 19:54:57 · 2039 阅读 · 0 评论 -
[Boost基础]函数与回调——bind绑定
#pragma once#include #include #include #include #include #include using namespace std; using namespace boost; //bind是C++98标准库中函数适配器bind1st、bind2nd的泛化和增强,可以适配任意的可调用对象,包括函数,函数指针,函数引用,成员函数指针和原创 2013-01-22 23:39:53 · 2422 阅读 · 0 评论 -
[Boost基础]并发编程——Thread多线程(二)
操作线程thread类还提供了3个很有用的静态成员函数yield(),sleep(),hardware_concurrency()yield()函数指示当前线程放弃时间片,允许其他的线程运行;暂停当前正在执行的线程对象,并执行其他线程(注意:这里的其他包括当前线程)sleep()让线程睡眠等待一小段时间,注意它要求的参数是一个system_time UTC时间点而不是时间长度;使当前线原创 2013-01-30 21:09:18 · 2607 阅读 · 0 评论 -
[Boost基础]VS2008/VS2010安装配置Boost1.50开发环境
1.参考《实战准标准库Boost,配置Boost的VS2008开发环境》2.参考《VS2010安装Boost》一、下载Boost库boost_1_50_0.zip (http://www.boost.org/users/download/),或是在这下载,解压到F:boost_1_50_0要做Python开发的还需下载: python-2.7.3.msi (http://w原创 2012-11-27 13:03:55 · 1847 阅读 · 0 评论 -
[Boost基础]并发编程——Thread多线程(三)
线程组thread库提供类thread_group用于管理一组线程,就像是一个线程池,它内部使用std::list来容纳创建的thread对象。成员函数有:and_thread(),remove_thread(),join_all(),interrupt_all()条件变量条件变量时thread库提供的另一种用于等待的同步机制,可以实现线程间的通信,它必须与互斥量配合使用,等待另一个线原创 2013-01-31 20:17:33 · 1840 阅读 · 0 评论 -
[Boost基础]字符串和文本处理——lexical_cast词汇转换
字符串和文本处理字符串与文本处理一直是C++的弱项,虽然C++98标准提供了一个标准字符串类std::string,暂缓燃眉之急,但C++仍然缺乏很多文本处理的高级特性,如正则表达式,分词等等,使得不少C++程序员不得不转向其他语言(eg:python)。Boost填充了C++这方面的空白。 Lexical_cast、format(类似”printf”格式的操作)和C标准库函数功能类似,它原创 2013-01-17 20:06:50 · 2067 阅读 · 0 评论 -
[Boost基础]容器数据结构——array定长数组
容器 Array:STL风格封装下的定长数组Multi_array:多维数组的容器和适配器Bimap:双向map列,使用boost.bimap,你可以创建两个类型都可作为键值的关联容器。Circular_buffer:一个STL兼容的容器,也被广泛称为环缓冲区或循环缓冲区。Dynamic_bitset:表示位的集合,提供operator[]访问每一位的值,并提供所有能够应用于内置整型的逐位原创 2013-01-16 20:54:34 · 2026 阅读 · 0 评论 -
[Boost基础]时间日期——timer计时器
日期时间C++一直以来缺乏对时间和日期的处理能力,而时间和日期又是现实生活中经常遇到的,C++程序员不得不求助于C,使用笨拙的结构和函数(struct tm,time())。而现在Boot使用timer和date_time库完美的解决了这个问题。Timer是一个很小的库,提供简易的度量时间和进度显示功能,可以用于性能测试等需要计时的任务,对于大多数的情况它足够用。Timer库包含3个组件:原创 2013-01-18 19:10:11 · 2765 阅读 · 0 评论 -
[Boost基础]函数与回调——ref引用
库ref在boost/ref.hpp中提供了模板工厂函数boost::ref,boost::cref分别对应包装引用和常引用。当在某些情况下需要拷贝对象参数,如果该对象无法进行拷贝,或者拷贝代价过高,这时候就可以选择ref。 #pragma once#include #include #include #include #include #include using nam原创 2013-01-22 11:23:56 · 1420 阅读 · 0 评论 -
[Boost基础]并发编程——asio网络库——异步socket处理
异步服务器端#include #include using namespace std;#include #include #include using namespace boost;using namespace boost::asio;void test1(){}//异步server//异步程序的处理流程与同步程序基本相同,只需要把原有的同步调用函数都换成前缀是asy原创 2013-08-29 02:49:07 · 5442 阅读 · 0 评论