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");
}
目录
相关文章
|
7月前
|
开发框架 Linux C语言
C、C++、boost、Qt在嵌入式系统开发中的使用
C、C++、boost、Qt在嵌入式系统开发中的使用
221 1
|
6月前
|
Unix
Unix环境高级编程(第三版)中apue.h头文件及其依赖安装教程
Unix环境高级编程(第三版)中apue.h头文件及其依赖安装教程
113 0
|
7月前
|
存储
boost 入门
boost 入门
76 0
|
7月前
|
存储 Unix Linux
boost C++知识点(六)
boost C++知识点(六)
|
7月前
|
存储 C++ 容器
boost C++知识点(四)
boost C++知识点(四)
|
7月前
|
存储 安全 C++
boost C++知识点(一)
boost C++知识点(一)
|
7月前
|
算法 C++
boost C++知识点(三)
boost C++知识点(三)
|
7月前
|
域名解析 网络协议 编译器
boost C++知识点(五)
boost C++知识点(五)
|
C语言 C++ Windows
利用EasyX图形库实现趣味化编程note1
利用EasyX图形库实现趣味化编程note1
71 0
|
设计模式 安全 机器人
学习Boost二:从附录3来看编码习惯
状态设计模式则是更加上一层,从具体的代码逻辑层次调升到了面对对象实现方式,它有更好的可扩展性(增加继承子类),更好的私密性(单独类内管理,彼此分割),更贴合低耦合、高内聚的方式。
39 0