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

#include <iostream>
#include <boost/pool/singleton_pool.hpp>
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 <iostream>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <boost/assign.hpp>
using namespace std;
using namespace boost::assign; int main()
{
vector<int> v;
v+= 1,2,3,4,5,6;
set<string> s;
s+="cpp","java","c#";
map<int,string> m;
m+= make_pair(1,"one"),make_pair(2,"two");
return 0; }

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

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

初始化和重复填充数据

#include <iostream>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <boost/assign.hpp>
using namespace std;
using namespace boost::assign; int main()
{
//初始化代码
vector<int> v = list_of(1)(2)(3);
map<int,string> m = map_list_of(1,"one")(2,"two");
//重复数据
vector<int> 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 <iostream>
#include <boost/operators.hpp>
using namespace std;
using namespace boost; class Point:boost::less_than_comparable<Point>
{
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"<<endl;
} }

boost之实用工具的更多相关文章

  1. C++ 之Boost 实用工具类及简单使用

    本文将介绍几个 Boost 实用工具类,包括 tuple.static_assert.pool.random 和 program_options等等.需要对标准 STL 具备一定的了解才能充分理解本文 ...

  2. Bootstrap<基础十> 响应式实用工具

    Bootstrap 提供了一些辅助类,以便更快地实现对移动设备友好的开发.这些可以通过媒体查询结合大型.小型和中型设备,实现内容对设备的显示和隐藏. 需要谨慎使用这些工具,避免在同一个站点创建完全不同 ...

  3. 10款让WEB前端开发人员更轻松的实用工具

    这篇文章介绍10款让Web前端开发人员生活更轻松的实用工具.每个Web开发人员都有自己的工具箱,这样工作中碰到的每个问题都有一个好的解决方案供选择. 对于每一项工作,开发人员需要特定的辅助工具,所以如 ...

  4. 十款让 Web 前端开发人员更轻松的实用工具

    这篇文章介绍十款让 Web 前端开发人员生活更轻松的实用工具.每个 Web 开发人员都有自己的工具箱,这样工作中碰到的每个问题都有一个好的解决方案供选择. 对于每一项工作,开发人员需要特定的辅助工具, ...

  5. .Net 高效开发之不可错过的实用工具(转)

    .Net 高效开发之不可错过的实用工具(转) 本文摘自: http://www.cnblogs.com/powertoolsteam/p/5240908.html#3372237 Visual Stu ...

  6. 实用工具推荐(Live Writer)(2015年05月26日)

    1.写博客的实用工具 推荐软件:Live Writer 使用步骤: 1.安装 Live Essential 2011,下载地址:http://explore.live.com/windows-live ...

  7. 快速访问WCF服务--ServiceModel 元数据实用工具 (Svcutil.exe)

    基本定义 ServiceModel 元数据实用工具用于依据元数据文档生成服务模型代码,以及依据服务模型代码生成元数据文档. SvcUtil.exe ServiceModel 元数据实用工具可在 Win ...

  8. Mac开发者必备实用工具推荐

    最近一个师兄给我推荐了一些Mac上的实用工具,用起来非常顺手,能提高不少开发效率.于是就想着把自己之前用过的其他工具也整理一下,一块推荐给大家,希望能对大家有帮助. Alfred 目前Mac下最好用的 ...

  9. SQL cmd 实用工具学习 -1

    启动 sqlcmd 实用工具并连接到 SQL Server 的默认实例 在"开始"菜单上,单击"运行". 在"打开"框中,键入 cmd,然后 ...

随机推荐

  1. connect()

    #include <sys/types.h>         #include <sys/socket.h> int connect(int sockfd, const str ...

  2. Tomcat闲聊

    上面是Tomcat的执行过程. 下面说几个概念: 1.JSP:这个就是在html文件中嵌入Java代码之后重新生成的一个文件(.jsp的文件) 2.servlet:就是一个处理动态资源的小程序,一般位 ...

  3. IOS设计模式的六大设计原则之迪米特法则(LOD,Law Of Demeter)

    定义 狭义的迪米特法则定义:也叫最少知识原则(LKP,Least Knowledge Principle).如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用.如果其中的一个类需要调用 ...

  4. RabbitMQ(一):Windows下RabbitMQ安装

    1.Windows下安装RabbitMQ需要以下几个步骤 (1):下载erlang,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erlang. ...

  5. redis 底层数据结构 压缩列表 ziplist

    压缩列表是列表键和哈希键的底层实现之一.当一个列表键只包含少量列表项,并且每个列表项要么就是小整数,要么就是长度比较短的字符串,redis就会使用压缩列表来做列表键的底层实现 当一个哈希键只包含少量键 ...

  6. 【转】Monkey测试4——Monkey命令行可用的全部选项

    Monkey命令行可用的全部选项 常规 --help 列出简单的用法. -v 命令行的每一个-v将增加反馈信息的级别. Level 0(缺省值)除启动提示.测试完成和最终结果之外,提供较少信息. Le ...

  7. 切比雪夫多项式(Chebyshev Polynomials)

    切比雪夫多项式在逼近理论中有重要的应用.这是因为第一类切比雪夫多项式的根(被称为切比雪夫节点)可以用于多项式插值.相应的插值多项式能最大限度地降低龙格现象,并且提供多项式在连续函数的最佳一致逼近. 参 ...

  8. 实战Java虚拟机之中的一个“堆溢出处理”

    从今天開始.我会发5个关于java虚拟机的小系列: 实战Java虚拟机之中的一个"堆溢出处理" 实战Java虚拟机之二"虚拟机的工作模式" 实战Java虚拟机之 ...

  9. 新MBP使用git命令时启用xcode的终端log

    Last login: Mon Oct 22 12:41:33 on consoleuser:~ me$ git Agreeing to the Xcode/iOS license requires ...

  10. POJ 1815 Friendship(最小割)

    http://poj.org/problem? id=1815 Friendship Time Limit: 2000MS   Memory Limit: 20000K Total Submissio ...