4.4.1 使用操作符+=向容器增加元素

2013-10-07 15:00:47 · 作者: · 浏览: 70

4.4.1  使用操作符+=向容器增加元素

boost.assign的用法非常简单,由于重载了操作符+=和逗号,可以用简洁到令人震惊的语法完成原来用许多代码才能完成的工作,如果不熟悉C++(www.cppentry.com)操作符重载的原理你甚至都不会意识到在简洁语法下的复杂工作。

使用assign库时必须使用using指示符,只有这样才能让重载的+=,等操作符在作用域内生效。例如:

  1. #include <boost/assign.hpp> 
  2. int main()  
  3. {  
  4.     using namespace boost::assign;                  //很重要,启用assign库的功能  
  5.     vector<int> v;                                  //标准向量容器  
  6.     v += 1,2,3,4,5, 6*6;                            //用operator+=和,填入数据  
  7.  
  8.     set<string> s;                                  //标准集合容器  
  9.     s += "cpp", "java", "c#", "python";  
  10.  
  11.     map<int, string> m;                             //标准映射容器  
  12.     m += make_pair(1, "one"),make_pair(2, "two");  
  13. }  

上面的代码示范了assign库操作标准容器的能力。+=操作符后可以接若干个可被容器容纳的元素,元素之间使用逗号分隔。元素不一定是常量,表达式或者函数调用也是可以接受的,只要其结果能够转换成容器可容纳的类型。比较特别的是map容器,必须使用make_pair()辅助函数来生成容器元素,单纯地用括号把pair的两个成员括起来是无效的。

operator+=很好用,但有一点遗憾,它仅限应用于STL中定义的标准容器(vector、list、set等),对于其他类型的容器(如Boost新容器)则无能为力。