#include <vector>
#include <iostream>
#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_generators.hpp>
#include <boost/uuid/uuid_io.hpp>
using namespace boost::uuids;
using namespace std;
int main()
{
//-------------------------
// 一些std函数的应用
//-------------------------
vector<unsigned int> v(16, 7);
uuid u;
std::copy(v.begin(), v.end(), u.begin()); // 将一个序列复制到另一个序列中(从begin到end)
std::fill_n(u.data + 2, 6, 8); // 将数组第二个序列号后的6个值赋为8
cout <<"/n u first print:" <<u<<endl;
std::memset(u.data, 0, u.size()); // 将数组中的所有元素都置零
cout <<"UUID is empty:"<<u.is_nil()<<endl; // 是否全零
cout <<"u second print:" <<u<<endl; // 再次输输出
//--------------------------
// uuid的比较(字典序1~9,a~z排序)
//--------------------------
uuid u1, u2;
std::fill_n(u1.begin(), u1.size(), 0xab); // 从第位开始始,后面size()位都赋成0xab
std::fill_n(u2.begin(), u2.size(), 0x10);
cout <<"uuid1:"<<u1<<endl<<"uuid2:"<<u2<<endl;
(u1>=u2)?cout<<"uuid1 is Max equal to uuid2/n":cout<<"uuid2 is Max to uuid1/n";
//--------------------------
// UUID 的几种生成器,它们都是函数对象
//--------------------------
// 第一种:
// Nil生成器(生成一个全零/无效的UUID/is_nil)
uuid nilUUID1 = nil_generator()(); // 第一个括号是构造函数,第二个是调用重载操作符(operator())
uuid nilUUID2 = nil_uuid(); // 内联函数
cout<< "nilUUID1: "<<nilUUID1<<endl;
cout<< "nilUUID2: "<<nilUUID2<<endl;
// 第二种:
// 字符串生成器(可是c数组,string,wstring,或迭代器指定的字符串区间)
string_generator sgen;
uuid strUUID1 = sgen("0123456789abcdef0123456789uvwxyz"); // 没有隔线分开,uvwxyz会变成ffffff
uuid strUUID2 = sgen("01234567-89ab-cdef-0123-456789abcdef"); // 有分隔,分隔不能乱隔
uuid strUUID3 = sgen(L"{01234567-89ab-cdef-0123-456789abcdef}"); // 使用"{}"括起来除{}外不能有16进制外的任何字符
cout << "strUUID1 value: "<<strUUID1<<endl;
cout << "strUUID2 value: "<<strUUID2<<endl;
cout << "strUUID3 value: "<<strUUID3<<endl;
// 第三种:
// 名字生成器(参数可以是16进制字符外的字符)
uuid baseUUID = sgen(L"{01234567-89ab-cdef-0123-456789abcdef}");
name_generator ngen(baseUUID); // 构造名字生成器,需要一个基准uuid,
// 只要基准uuid不变,相同字符串总产生相同的uuid
uuid nameUUID1 = ngen("Ajiaxi"); // 为Ajiaxi生成一个UUID, version是shal算法
uuid nameUUID2 = ngen("Link"); // 为Link生成一个UUID
cout << "nameUUID1 value: "<<nameUUID1<<endl;
cout << "nameUUID2 value: "<<nameUUID2<<endl;
// 第四种:
// 随机生成器(使用boost::random生成随机种子)
random_generator rgen;
uuid ranUUID = rgen(); // 生成一个随机uuid
cout << "ranUUID value: "<<ranUUID<<endl;
getchar();
return 0;
}

boost uuid 学习笔记的更多相关文章

  1. boost.asio学习笔记一、linux下boost库的安装

    欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/46761029 学习开源库第一步就是编译安装好库,然后执行成功一个 ...

  2. Boost Thread学习笔记五

    多线程编程中还有一个重要的概念:Thread Local Store(TLS,线程局部存储),在boost中,TLS也被称作TSS,Thread Specific Storage.boost::thr ...

  3. Boost Thread学习笔记四

    barrierbarrier类的接口定义如下:  1 class barrier : private boost::noncopyable   // Exposition only 2 { 3 pub ...

  4. Boost Thread学习笔记三

    下面先对condition_impl进行简要分析.condition_impl在其构造函数中会创建两个Semaphore(信号量):m_gate.m_queue,及一个Mutex(互斥体,跟boost ...

  5. Boost Thread学习笔记二

    除了thread,boost种:boost::mutexboost::try_mutexboost::timed_mutexboost::recursive_mutexboost::recursive ...

  6. Boost Thread学习笔记

    thread自然是boost::thread库的主 角,但thread类的实现总体上是比较简单的,前面已经说过,thread只是一个跨平台的线程封装库,其中按照所使用的编译选项的不同,分别决定使用 W ...

  7. Boost 线程学习笔记

    Bolg转载自:http://www.cnblogs.com/lvdongjie/p/4447193.html 一: 创建线程 #include <iostream> #include & ...

  8. Boost Python学习笔记(四)

    你将学到什么 在Python中调用C++代码时的传参问题 基础类型 Python的字符串是常量,所以C++函数参数中的std::string &必须为const 修改源文件(main.cpp) ...

  9. Boost Python学习笔记(五)

    你将学到什么 在C++中调用Python代码时的返回值问题 基础类型 修改Python脚本(build/zoo.py) def rint(): return 2 def rstr(): return ...

随机推荐

  1. FPGA知识大梳理(三)verilogHDL语法入门(2)知识汇总

    1,时序逻辑.将上次的练习修改成时序逻辑会如何设计. always @ (posedge clock) 2,block 与unblocking  A,有clock的always中通常使用nonbloc ...

  2. c++ 实现将数字转换为中文数字输出

    实现如下函数: void printInChinese(int num); 这个函数输入一个小于100000000(一亿)的正整数,并在屏幕上打印这个数字的中文写法. 例如: 17 -> 一十七 ...

  3. A. Liserious战队

    Liserious战队是一支活跃在京沪地区的著名密室逃脱战队,在优秀的队长Liserious和芳姐的带领下,打遍天下大大小小的密室逃脱,攻无不克,战无不胜,上天入地无所不能. 世界密室逃脱委员会以IS ...

  4. ceph源码之一

    转自于:http://blog.csdn.net/changtao381/article/details/8698935 一.概述: 其结构如下:在src 里, 网络通信:  msg  里面 包括了网 ...

  5. ZOJ 3211 Dream City DP 01背包 经典问题

    题目大意:JAVAMAN 到梦幻城市旅游见到了黄金树,黄金树上每天回结出金子.已经有n棵树,JAVAMAN要停留m天,每天只能砍掉一棵树,砍掉树后就能得到树上的黄金.给定n棵树上原有的黄金a[i]和每 ...

  6. ZOJ2849 优先队列BFS

    Attack of Panda Virus Time Limit: 3 Seconds      Memory Limit: 32768 KB In recent months, a computer ...

  7. u-boot分析——struct gd_t与struct bd_t

    gd_t和bd_t是u-boot中两个重要的数据结构,在初始化操作很多都要靠这两个数据结构来保存或传递.分别定义在./include/asm/global_data.h和./include/asm/u ...

  8. cocos2dx进阶学习之CCEGLView

    继承关系 CCEGLView-> CCEGLViewProtocol CCEGLView是窗口,在不同平台上有不同的实现,而CCEGLViewProtocol是CCEGLView定义的接口,所以 ...

  9. 基于visual Studio2013解决算法导论之043单源最短路径dijstra矩阵

     题目 单源最短路径dijstra矩阵 解决代码及点评 // 26单源最短路径dijstra矩阵.cpp : 定义控制台应用程序的入口点. // #include <iostream> ...

  10. 关于初始化C++类成员

    在使用C++编程的过程当中,常常需要对类成员进行初始化,通常的方法有两种: 第一种方法: CMYClass::CSomeClass() { x=0; y=1; } 第二种方法: CSomeClass: ...