Boost C++ Libraryのお勉強その11

Boost.Integer

C99でstdint.hが追加になってるけど、現行のC++にはないのでboostにありますよとか、互換性の為のもの。

Boost.Interprocess

UN*Xの世界でIPCとか言ってるもの。プロセス生成自体が色々面倒なので飛ばす。

Boost.Interval

数値の範囲同士を計算するクラス。

#include <iostream>
#include <boost/numeric/interval.hpp>

int main(void)
{
    boost::numeric::interval < int > a(1, 2);
    boost::numeric::interval < int > b(3, 4);
    boost::numeric::interval < int > c = a + b;
    std::cout << c.lower() << ", " << c.upper() << std::endl;
    return 0;
}
4, 6

Boost.Intrusive

要素側がコンテナのデータを保持するもの。
リストのデストラクタが何かするらしく、要素とリストを同じスコープに入れてるとダメ。

#include <iostream>
#include <algorithm>
#include <boost/intrusive/list.hpp>

class Dummy : public boost::intrusive::list_base_hook <>
{
    private:
        int data;

    public:
        Dummy(int d) : data(d) {}
        void view(void)
        {
            std::cout << data << std::endl;
        }
};

int main(void)
{
    Dummy a(1);
    Dummy b(2);

    {
        boost::intrusive::list < Dummy > list;
        list.push_back(a);
        list.push_back(b);

        list.front().view();
        list.back().view();
    }

    return 0;
}
1
2