Boost中的一些实用技术

类型推断:

#include <iostream>
#include <vector>
#include <string>
#include <boost/typeof/typeof.hpp>
using namespace std;

vector<string> func(){
	vector<string> v(10);
	return v;
}

int _tmain(int argc, _TCHAR* argv[])
{
	BOOST_TYPEOF(2.0) x=2.0*3;
	BOOST_AUTO(years,2+3);

	BOOST_AUTO(&a , new double[11]);
	BOOST_AUTO(p , new string("hello"));

	BOOST_AUTO(v , func());
	return 0;
}

不能复制的类

#include<boost/utility.hpp>
using namespace std;

//不能复制的类
class demo : public boost::noncopyable{

};

int _tmain(int argc, _TCHAR* argv[])
{
	demo a;
	demo b;
	//a=b;
	//a(b);
	return 0;
}

//向typeof注册自定义类型

#include <iostream>
#include <vector>
#include <string>
#include<boost/typeof/typeof.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
using namespace std;

//向typeof注册自定义类型
//
namespace ex{
	class demo_class{
		int a,b;
	};
}
BOOST_TYPEOF_REGISTER_TYPE(ex::demo_class)

int _tmain(int argc, _TCHAR* argv[])
{
	BOOST_AUTO(x, make_pair("test",ex::demo_class()));
	cout<<typeid(x).name()<<endl;
}

赋值:

#include <iostream>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <boost/assign.hpp>

int _tmain(int argc, _TCHAR* argv[])
{
	using namespace boost::assign;
	std::vector<int>v;
	v+=1,2,3,4,5,9*10;

	std::set<std::string> s;
	s+="cpp","java","c","python";

	std::map<int,std::string>m;
	m+=std::make_pair(1,"hello"),std::make_pair(2,"rollen");

}
#include <iostream>
#include <vector>
#include <string>
#include <set>
#include <list>
#include <map>
#include <boost/assign.hpp>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	using namespace boost::assign;
	std::vector<int>v;
	push_back(v)(1)(2)(3)(4);
	push_back(v),1,2,3,4,5;
	push_back(v),1,(2),3;

	list<int> l;
	push_front(l)(1)(2);

	set<double>s;
	insert(s)(12.23)(1.23);

	map<int,string>m;
	insert(m)(1,"name")(2,"age");
}
时间: 2024-10-27 19:22:21

Boost中的一些实用技术的相关文章

boost中asio网络库多线程并发处理实现,以及asio在多线程模型中线程的调度情况和线程安全。

1.实现多线程方法: 其实就是多个线程同时调用io_service::run         for (int i = 0; i != m_nThreads; ++i)        {            boost::shared_ptr<boost::thread> pTh(new boost::thread(                boost::bind(&boost::asio::io_service::run,&m_ioService)));       

使用boost中的property_tree实现配置文件

property_tree是专为配置文件而写,支持xml,ini和json格式文件   ini比较简单,适合简单的配置,通常可能需要保存数组,这时xml是个不错的选择.   使用property_tree也很简单,boost自带的帮助中有个5分钟指南 http://www.boost.org/doc/libs/1_46_1/doc/html/boost_propertytree/tutorial.html   这里写一下使用xml来保存多维数组,在有些情况下一维数组并不能满足要求. 举个简单的例

Boost中应用的泛型编程技术

1.何谓泛型编程 泛型编程(Generic Programming)关注于产生通用的软 件组件,让这些组件在不同的应用场合都能很容易地重用.在C++中,类模板和函 数模板是进行泛型编程极为有效的机制.有了这两大利器,我们在实现泛型化的 同时,并不需要付出效率的代价. 作为泛型编程的一个简单例子,让我们 看一下在C库中如何让memcpy()函数泛型化.一种实现方法可能是这样的: void* memcpy(void* region1, const void* region2, size_t n) {

shared ptr可以从boost库中单独提出来吗

问题描述 shared ptr可以从boost库中单独提出来吗 50C 因为最近开发需要,想在一个平台上移植代码,但是代码中应用了大量的shared ptr,但是移植代码的时候不想把整个boost库移植,只想移植shared ptr相关,有什么办法吗?还是需要一个文件一个文件的分离出来? 解决方案 只能一个个头文件隔离,主要取决于它的依赖项.估计有点多,不是那么容易抽取出来 解决方案二: 这个要找库大神了,不过即使可行,也不划算的啊 解决方案三: shared ptr是boost中的基本类型,涉

机器学习中的算法(1)-决策树模型组合之随机森林与GBDT

机器学习中的算法(1)-决策树模型组合之随机森林与GBDT. 决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等.但是同时,单决策树又有一些不好的地方,比如说容易over-fitting,虽然有一些方法,如剪枝可以减少这种情况,但是还是不够的. 模型组合(比如说有Boosting,Bagging等)与决策树相关的算法比较多,这些算法最终的结果是生成N(可能会有几百棵以上)棵树,这样可以大大的减少单决策树带来的毛病,

boost学习之--shared_ptr

 在boost中,有一个智能指针类shared_ptr可以管理好我们的指针.这里我不详解,以下列出使用例子.自己现写现调通过的哈: #include <iostream> #include <boost/shared_ptr.hpp> #include <boost/make_shared.hpp> using namespace std; using namespace boost; class Person { public: Person(string name,

VS2010 编译安装boost库

实践是最好的办法..学习C++,想试试线程,然后打算用boost库,结果boost库编译差点吓到我..没看到比较完整的安装教程..一直耽搁.今天动手.完成了.方法记录如下:1.下载boost从boost官网( http://www.boost.org )上下载最新的boost版本,现在最新是1.49版本,解压到自定义目录(我解压到了D:/program files,最终的目录结构是D:\Program Files\boost_1_49_0) 2.编译安装 在D:\Program Files\bo

boost在windows下的编译(vs2010)

首先说下环境,win7,vs2010. 先在http://www.boost.org/users/download/上下载boost安装包,我下的是1.52.0版. 按照说明,直接运行"bootstrap.bat",报"'cl'不是内部或外部命令"的错误,于是在环境变量中添加了cl.exe的路径--"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_ia64".再次运行&

Boost Graph Library一个通用图库用于C++开发人员

关于计算的公理表达通常颇具争论.然而,现代计算最重要的理论支柱之一的图论并不是这些公理表达之一.无数工程领域(从设计路由器和网络到设计构成移动设备核心的芯片)都是图论的应用. 作为 C++++ 应用程序软件http://www.aliyun.com/zixun/aggregation/7155.html">开发人员,我们通常需要直接将实际工程问题转化成一个等价的图论问题.如果有一个可靠的基于 C++ 的通用图库,就可以帮助我们实现这个转换,这样的图库显然非常受欢迎:Boost Graph