许多时候,我们需要为容器初始化或者赋值,填入大量的数据;
STL容器仅提供了容纳这些数据的方法,但是填充的步骤是相当地麻烦(insert、push_back);
于是,boost::assign出现了,其重载了+= ,()等运算符,用难以想象的简洁对STL容器初始化或赋值.
+=很好用,但是仅适用于STL的标准容器,对于boost新容器却无能为力;
()可以更灵活实现对容器的初始化;
容器构造的时候就对数据进行填充list_of等.
C++ Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
/* 许多时候,我们需要为容器初始化或者赋值,填入大量的数据; STL容器仅提供了容纳这些数据的方法,但是填充的步骤是相当地麻烦(insert、push_back); 于是,boost::assign出现了,其重载了+= ,()等运算符,用难以想象的简洁对STL容器初始化或赋值. +=很好用,但是仅适用于STL的标准容器,对于boost新容器却无能为力; ()可以更灵活实现对容器的初始化; 容器构造的时候就对数据进行填充list_of等. */ /************************************************************************/ /* C++ stl Library */ /************************************************************************/ #include <iostream> #include <string> #include <vector> #include <set> #include <map> /************************************************************************/ /* C++ boost Library */ /************************************************************************/ #include "boost/assign.hpp" using namespace boost::assign; using namespace std; int main( void ) { //operator+= vector< int > vec; vec += 1 , 2 , 3 , 4 , 5 , 6 * 6 ; set<string> s; s += "c" , "c++" , "java" , "c#" ; map< int ,string> mInfo; mInfo += make_pair( 1 , "Michael" ),make_pair( 2 , "James" ); //operator() vector< int > v1; push_back(v1) ( 1 ) ( 2 ) ( 3 ) ( 4 ) ( 5 ); map< int ,string> maps; insert(maps) ( 1 , "East" ) ( 2 , "West" ); vector< int > v2; push_back(v2), 1 , 2 , 3 , 4 , 5 ; //list_of map_list_of/pair_list_of (tuple_list_of) vector< int > vec1 = list_of( 1 ) ( 2 ) ( 3 ) ( 4 ) ( 5 ); set< int > set1 = (list_of( 10 ), 20 , 30 , 40 , 50 ); map< int , int > map1 = map_list_of( 1 , 1 ) ( 2 , 2 ) ( 3 , 3 ); map< int ,string> map2 = pair_list_of( 1 , "aaa" ) ( 2 , "bbb" ); //减少重复输入 repeat repeat_fun range vector< int > vv = list_of( 1 ).repeat( 3 , 2 ) ( 4 ) ( 5 ) ( 6 ); //更多内容请感兴趣研究 //list_of的嵌套使用list_of(list_of()) //引用初始化列表ref_list_of() cref_list_of() //... cin.get(); return 0 ; } |