boost::assignでコンテナに要素を追加するコードを簡潔に記述する

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);

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください