ヘッダー
boost/assign.hpp
できること
コンテナの初期化・要素追加が手軽にできる.
使用例
前準備
#include <boost/assign.hpp> using namespace boost::assign;
vector
簡単.
// 初期化 vector<int> v = list_of(1)(2)(3); // 末尾への要素の追加(push_back) v += 4, 5, 6; // v = {1, 2, 3, 4, 5, 6}
list
push_front時の要素が追加される順番に注意.
// 初期化 list<int> l = list_of(4)(5)(6); // 末尾への要素の追加(push_back) l += 7, 8, 9; // 先頭への要素の追加(push_front) push_front(l) = 3, 2, 1; // l = {1, 2, 3, 4, 5, 6, 7, 8, 9}
deque
listと同様.
コンテナの要素がpairの場合
要素がpairの場合でもよしなにやってくれる.
// 初期化 deque<pair<string, int> > d = list_of<pair<string, int> >("ccc", 3)("ddd", 4); // 末尾への要素の追加(push_back) push_back(d)("eee", 5)("fff", 6); // 先頭への要素の追加(push_front) push_front(d)("bbb", 2)("aaa", 1); // d = {("aaa", 1), ("bbb", 2), ("ccc", 3), ("ddd", 4), ("eee", 5), ("fff", 6)}
set
// 初期化 set<string> s = list_of("ccc")("ddd"); // 要素の追加(insert) s += "aaa", "bbb"; // setなので重複する要素は追加されない s += "aaa"; // s = {"aaa", "bbb", "ccc", "ddd"}
map
// 初期化 map<string, int> m = map_list_of("ccc", 3)("ddd", 4); // 要素の追加(insert) insert(m)("aaa", 1)("bbb", 2); // mapなのでkeyが重複する要素は追加されない insert(m)("aaa", 5); // m = {("aaa", 1), ("bbb", 2), ("ccc", 3), ("ddd", 4)}