boost::assignを使うと、コンテナに要素を追加するコードを簡潔に記述することができます。
必要なヘッダ
#include <boost/assign.hpp>
一般的にstd::vectorに要素を追加するには、push_backを繰り返し使います。
std::vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
boost::assignを使うと、次にように簡潔に書くことができます。
using namespace boost::assign;
std::vector<int> v;
v += 1,2,3,4,5;
同様に、std::mapへの要素の追加は次のように書くことができます。
using namespace boost::assign;
std::map<std::string, int> m;
insert(m)("one", 1)("two", 2)("tree", 3);
std::vectorに初期化で要素を追加する場合は、boost::assign::list_ofを使います。
std::vector<int> v = boost::assign::list_of(1)(2)(3)(4)(5);
set::setも同じです。
std::set<int> s = boost::assign::list_of(1)(2)(3)(4)(5);
std::mapに初期化で要素を追加する場合は、boost::assign::map_list_ofを使います。
std::map<std::string, int> m = boost::assign::map_list_of("one", 1)("two", 2)("tree", 3);
boost::tupleの場合は、boost::assign::tuple_list_ofを使います。
std::vector<boost::tuple<int, std::string, int> > t = boost::assign::tuple_list_of(1, "foo", 2)(3, "bar", 4);