C++と色々

主にC++やプログラムに関する記事を投稿します。

boost::assign

コンテナを初期化や代入する際、push_back等を並べる必要がなく、簡単に書けるようになります。
イテレータ初期化に対応しているクラスなら使えます。

サンプル

#include <boost/assign.hpp>
#include <vector>
#include <list>
#include <map>
#include <string>
using namespace std;

int main()
{
	using namespace boost::assign;

	//代入
	{
		vector<int> v;
		v += 1, 2, 3, 4;

		list<int> l;
		l += 1, 2, 3, 4;

		map<string, int> m;
		insert(m)("aaa", 1)("bbb", 2)("ccc", 3);
	}
	//初期化
	{
		vector<int> v = list_of(1)(2)(3)(4);

		list<char> l = list_of('a')('b')('c');

		map<string, double> m = map_list_of("abc", 0.0)("def", 1.0)("ghi", 2.0);
	}
}