boost实用工具:assign库了解学习

  许多时候,我们需要为容器初始化或者赋值,填入大量的数据;
  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;
}
原文地址:https://www.cnblogs.com/MakeView660/p/7090323.html