博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
boost之实用工具
阅读量:5091 次
发布时间:2019-06-13

本文共 2266 字,大约阅读时间需要 7 分钟。

1.noncopyable用于禁止复制和拷贝的类继承。声明拷贝和赋值函数为私有,将运行时的错误转化为编译期的错误。

#include 
#include
using namespace std;using namespace boost;class Mynoncopy {public: Mynoncopy(){}private: Mynoncopy(const Mynoncopy&); void operator=(const Mynoncopy&);};class Test:Mynoncopy{};int main(){ Test t1; //Test t2 = t1;//禁止拷贝 Test t3; //t3 = t1;//禁止复制 return 0; }

 2.assgin,有时候我们测试需要大量的数据,需要重复调用insert,或者push_back(),assgin主要解决这类问题

 

#include 
#include
#include
#include
#include
#include
using namespace std;using namespace boost::assign;int main(){ vector
v; v+= 1,2,3,4,5,6; set
s; s+="cpp","java","c#"; map
m; m+= make_pair(1,"one"),make_pair(2,"two"); return 0; }

 还有一种调用方式是使用()操作符但是需要辅助函数:

#include 
#include
#include
#include
#include
#include
using namespace std;using namespace boost::assign;int main(){ vector
v; v+= 1,2,3,4,5,6; push_back(v)(1)(2)(3)(4); set
s; s+="cpp","java","c#"; map
m; m+= make_pair(1,"one"),make_pair(2,"two"); insert(m)(1,"one")(2,"two"); return 0; }

 初始化和重复填充数据

#include 
#include
#include
#include
#include
#include
using namespace std;using namespace boost::assign;int main(){ //初始化代码 vector
v = list_of(1)(2)(3); map
m = map_list_of(1,"one")(2,"two"); //重复数据 vector
vrepeat = list_of(1).repeat(3,10)(2)(3); return 0; }

 3.由于交换时需要进行拷贝和赋值,如果是对象很大会产生很大的运行时代价。所以需要高效的交换函数。

4.operators是用于重载操作符的类,是一系列的类,有两大特点,一是采用友元,二是自动推导

4.1.equality_comparable 要求提供==可自动实现!=

4.2.less_than_comparable:要求提供<,可自动实现>.<=.>=

4.3.addable:要求提供+=可自动实现+

#include 
#include
using namespace std;using namespace boost;class Point:boost::less_than_comparable
{public: Point(int x = 0,int y = 0,int z = 0):m_x(x),m_y(y),m_z(z){} friend bool operator<(const Point& l,const Point& r) { return (l.m_x *l.m_x < r.m_x * r.m_x); }private: int m_x; int m_y; int m_z;};int main(){ Point lp(1,2,3); Point rp(3,4,5); if (rp>=lp) { cout << "your test is right"<

 

转载于:https://www.cnblogs.com/liuweilinlin/p/3261099.html

你可能感兴趣的文章
源代码管理十诫
查看>>
socket粘包实例个人理解
查看>>
leapmotion 初识
查看>>
【安卓5】高级控件——ListActivity
查看>>
Windows虚拟机中无法传输Arduino程序的问题
查看>>
0909对编译原理的了解
查看>>
我的2016
查看>>
Visual Studio 2010的新特性
查看>>
前端之路——JavaScript基础 二
查看>>
乔布斯六招让“烂苹果”变美味
查看>>
dtl模板语言,自定义filter和tag
查看>>
pip3换源,grep,sed ,awk 三剑客,通配符,linux运行django项目
查看>>
让 framset 框架中的页面全屏显示
查看>>
对于Spring使用注解的一点总结
查看>>
tomcat 解析(五)-Tomcat的核心组成和启动过程
查看>>
linux mysql
查看>>
UEP-find查询
查看>>
C++内存模型
查看>>
range和xrange的区别详解
查看>>
su: Authentication failure问题
查看>>