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");
    }
  • 相关阅读:
    canvas 实现环形进度条
    wx 小程序 text 文本 &nbsp; 字数多了会自动换行的问题
    微信小程序 checked 选择功能 js中获取对应的选择值的改变以及修改
    微信小程序 scroll-view 横向滚动问题
    版本三开始看一边
    wx小程序 更新数组中的对象这样类型的写法
    react
    微信小程序checkbox样式和background修改
    ES6扩展——模板字符串
    函数参数的解构赋值
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2418676.html
Copyright © 2011-2022 走看看