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

Boost.MemberFunction

memberをmemと略すのはどうなんだろ。cの標準ライブラリ的にmemはmemoryの略だよな。

#include <iostream>
#include <vector>
#include <algorithm>

#include <boost/mem_fn.hpp>

class Dummy
{
private:
    int e_;

public:
    Dummy(int e) : e_(e) {}
    void fun(void)
    {
        std::cout << e_ << std::endl;
    }
};

int main(void)
{
    std::vector < Dummy > v;
    v.push_back(Dummy(1));
    v.push_back(Dummy(2));
    v.push_back(Dummy(3));
    std::for_each(v.begin(), v.end(), boost::mem_fn(&Dummy::fun));
    return 0;
}
1
2
3

Boost.MinMax

minとmaxを一度に返すもの。こういう細々とした便利関数は重要だと思う。どのくらいの頻度で必要になるかは分からないが…。

#include <iostream>

#include <boost/tuple/tuple_io.hpp>
#include <boost/algorithm/minmax.hpp>

int main(void)
{
    std::cout << boost::minmax(1, 0) << std::endl;
    return 0;
}
(0, 1)

Boost.MultiArray

領域は連続しているらしい。

#include <iostream>
#include <iterator>
#include <algorithm>

#include <boost/multi_array.hpp>

int main(void)
{
    boost::multi_array < int, 3 > ma(boost::extents[2][2][2]);
    boost::multi_array < int, 3 >::index i, j, k;
    for (i = 0; i < 2; ++i)
    {
        for(j = 0; j < 2; ++j)
        {
            for(k = 0; k < 2; ++k)
            {
                ma[i][j][k] = 1;
            }
        }
    }
    return 0;
}