• 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");
    }
  • 相关阅读:
    【P2236】彩票(搜索+剪枝)
    【P1714】切蛋糕(单调队列)
    【P1886】滑动窗口(单调队列→线段树→LCT)
    【P3522】TEM(单调队列+DP)
    【P3957】跳房子(单调队列+DP+二分)
    【P1947】笨笨当粉刷匠(DP+前缀和)
    【P2564】生日礼物(单调队列)
    【[NOI2011]智能车比赛】(建图+spfa+坑爹精度)
    diyiti.cpp
    由最小环问题想到的
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2418676.html
Copyright © 2020-2023  润新知