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");
    }
  • 相关阅读:
    常见错误--06.18
    类目-延展-协议
    iOS页面传值-wang
    ios常见的页面传值方式
    delegate和protocol
    沙盒路径及文件 操作
    tableView优化性能
    IOS面试题
    浅谈Runloop
    面试题
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2418676.html
Copyright © 2011-2022 走看看