4.4.1 使用操作符+=向容器增加元素
boost.assign的用法非常简单,由于重载了操作符+=和逗号,可以用简洁到令人震惊的语法完成原来用许多代码才能完成的工作,如果不熟悉C++(www.cppentry.com)操作符重载的原理你甚至都不会意识到在简洁语法下的复杂工作。
使用assign库时必须使用using指示符,只有这样才能让重载的+=,等操作符在作用域内生效。例如:
- #include <boost/assign.hpp>
- int main()
- {
- using namespace boost::assign; //很重要,启用assign库的功能
- vector<int> v; //标准向量容器
- v += 1,2,3,4,5, 6*6; //用operator+=和,填入数据
-
- set<string> s; //标准集合容器
- s += "cpp", "java", "c#", "python";
-
- map<int, string> m; //标准映射容器
- m += make_pair(1, "one"),make_pair(2, "two");
- }
上面的代码示范了assign库操作标准容器的能力。+=操作符后可以接若干个可被容器容纳的元素,元素之间使用逗号分隔。元素不一定是常量,表达式或者函数调用也是可以接受的,只要其结果能够转换成容器可容纳的类型。比较特别的是map容器,必须使用make_pair()辅助函数来生成容器元素,单纯地用括号把pair的两个成员括起来是无效的。
operator+=很好用,但有一点遗憾,它仅限应用于STL中定义的标准容器(vector、list、set等),对于其他类型的容器(如Boost新容器)则无能为力。