• 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;
    }
  • 相关阅读:
    [NOI2018]冒泡排序
    四 Synchronized
    三 volatile关键字
    二 原子类
    一 ThreadLocal
    xshell 登录虚拟机ubuntu
    三、kafka主要配置
    二 kafka设计原理
    一. kafka 入门
    Spring boot 学习二:入门
  • 原文地址:https://www.cnblogs.com/MakeView660/p/7090323.html
Copyright © 2020-2023  润新知