#include <boost/noncopyable.hpp>
#include <boost/assign.hpp>
#include <vector>
#include <set>
#include <map>
#include <list>
#include <string>
#include <iostream>
using namespace boost;
using namespace std;
using namespace boost;
class A
{
private:
A(const A&);
A operator=(const A&);
};
//B不允许拷贝
class B:public A
{};
//用bost实现
class C:boost::noncopyable
{
};
int main(int argc, char** argv)
{
C c;
// C c1(c); 不允许拷贝构造
//assign boost库的assign测试,在集群赋值的时候比较有用
//assign 重载了+=,只能使用于STL定义的容器
using namespace boost::assign;
vector<int> vi;
vi+= 1,2,3,4,5;
set<string> vs;
vs+="boost","assign","test";
map<int,string> m;
m+= make_pair(1,"test"),make_pair(2,"haha");
//assign重载operator(),使用三个辅助函数,insert(),push_front(),push_back()
using namespace boost::assign;
vector<int> v1;
push_back(v1) (1) (2) (3) (4);
list<string> s1
;
push_front(s1) ("this") ("is") ("test");
//set和map只能用insert
map<int,string> m1;
insert(m1) (1,"ns") (2,"sn");
//+=和()解决了对容器的赋值问题,但是构造容器的时候就赋值?
//assign库使用list_of(),map_list_of()/pair_list_of()和tuple_list_of()三个函数解决这个问题
vector<int> vv1 = list_of(1) (2) (3) (4) (5);
vector<int> vv2 = (list_of(1),2,3,4,5);//括号和逗号的结合使用,需要把整个list括起来
map<int,string> mm1=list_of(make_pair(1,"ns")) (make_pair)(2,"sn");
return 0;
}
boost学习之uti
最新推荐文章于 2024-07-08 13:43:17 发布