zoukankan      html  css  js  c++  java
  • 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");
    }
  • 相关阅读:
    使用 Promise.all 同时发起多个请求
    vite 开发 Cesium 程序最佳配置实践
    【linux学习】使用grep命令获取过滤的数据作为下个命令的入参
    记一次k8s depolyment失败处理
    powerdesigner导出excel数据字典
    vue 时间格式
    ASP.NET MVC4 跨域配置
    Win10系统中切换虚拟桌面的快捷键如何设置
    不顾一切最简NHinbernate配置并读写数据库
    Windows time_wait过多解决办法
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2418676.html
Copyright © 2011-2022 走看看