サンプルの動作確認バージョン [GCC4.4/1.42.0] [VC9/1.42.0]
#include <iostream>
#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_io.hpp>
#include <boost/uuid/uuid_generators.hpp>
using namespace boost::uuids;
int main()
{
// ランダムにユニークIDを生成
uuid u1 = random_generator()();
uuid u2 = random_generator()();
uuid u3 = random_generator()();
std::cout << u1 << std::endl;
std::cout << u2 << std::endl;
std::cout << u3 << std::endl;
// 16進の文字列表現をuuidオブジェクトに変換
// (ハイフンの入った文字列表記もサポートされてるはずなのですが
// 1.42.0 ではバグってて動かない…?)
uuid base = string_generator()("0123456789abcdef0123456789abcdef");
std::cout << base << std::endl;
// 別のuuidをベースに、文字列からUUIDを生成
name_generator gen(base);
uuid u4 = gen("www.kmonos.net");
uuid u5 = gen("boost.org");
uuid u6 = gen("www.kmonos.net");
std::cout << u4 << std::endl;
std::cout << u5 << std::endl;
std::cout << u6 << std::endl; // 必ずu4と同じになる
}
6fb60b9b-1c29-4831-9c29-b8311c29b831 8b8365f8-eda4-4683-ada4-8683eda48683 99744049-deb0-4cfa-9eb0-4cfadeb04cfa 01234567-89ab-cdef-0123-456789abcdef 9a5d9d57-47f3-5b00-9a45-26731e323254 9ad8af17-95fd-5050-b9e4-9a1a62ef0035 9a5d9d57-47f3-5b00-9a45-26731e323254
COMや分散オブジェクトやなにかで、世界中で唯一の他とかぶらない識別子、 UUID が必要になることがあります。Boost.Uuid はそういうIDを生成するためのライブラリです。 乱数を使ってランダムに生成することや、 ドメイン名などの識別文字列から生成する (そして同じ文字列からはどの環境で生成しても等しい値になる) ことが可能です。ハードウェアやミドルウェアの提供する機能を使った UUID 生成機能は将来的に実装予定とのこと。