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;

}

时间: 2024-10-29 10:37:51

boost实用工具:assign库了解学习的相关文章

67 个JavaScript和CSS实用工具、库与资源

在这篇文章中,我不会与大家谈论大型的前端框架,如 React.Angular.Vue 等,也没有涉及那些流行的代码编辑器,如 Atom.VS Code.Sublime,我只想与大家分享一个有助于提升开发人员效率的工具列表合集. 或许,一些朋友已经对文中的一些工具有所了解,但如果你发现了一些对你有帮助的新工具,那么,我将倍感欣慰. 由于这个列表中包含了不同类别的资源,为了便于大家查看,我已将其进行了重新的分类,来 Enjoy 吧! JavaScript 库 Particles.js ?- 一个用于

boost实用工具:创建一个禁止复制的类 noncopyable

boost的noncopyable允许创建一个禁止复制的类,使用很简单,但很好用! C++ Code 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394   /* boost_noncopya

c++ boost库学习三:实用工具

noncopyable 大家都知道定义一个空类的时候,它实际包含了构造函数,拷贝构造函数,赋值操作符和析构函数等. 这样就很容易产生一个问题,就是当用户调用A a(“^_^") 或者A c="^_^" 时会发生一些意想不到的行为,所以很多时候我们需要禁用这样的用法. 一种方法就是把拷贝构造函数和赋值操作符显式的定义为private,但是这样需要很多代码. 于是boost库为大家提供了一个简单的方法:只需要将类继承于noncopyable就可以了. #include "

BOOST 库中filesyatem 库的学习

/*FileSyatem 库的学习 ------------------------------------------------------------------------------------------------------------库的使用方式 嵌入源码的形式: #define BOOST_SYSTEN_NO_LIB #define BOOST_FILESYSTEM_NO_LIB #include<boost\filesystem.hpp> ----------------

值得网页设计师&amp;前端收藏的实用工具列表

原文地址:http://www.uisdc.com/tool-list-web-developers# 无论你是经验丰富的前端,还是刚刚起步的设计师,这些为真正的网页设计师和开发者所准备的实用工具.在线服务.资源和代码片段,都是为你而生的,合理的运用能够让你的网页设计与开发事半功倍. 这次总结的工具总计有40款,它们基本上可以分为8个大类 ·灵感与阅读:这类素材通常是设计案例和酷站,它们启发灵感,给你经验 ·网络社区:汇集Web开发者和设计师的优秀社区 ·网页测速工具:一些最好的网站测速工具 ·

标准模板库(STL)学习探究之vector容器

标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据.为了可以使用vector,必须在你的头文件中包含下面的代码:#include <vector>构造函数. Vectors 包含着一系列连续存储的元素,其行为和数组类

Linux/Windows 实用工具简记

以下只是开发中可能用的比较多的工具,另外还有其他很多未曾提及的实用工具.Linux篇: 1.链接过程的调试:主要用于查看构建过程:如链接时加载的动态库以及运行时加载动态库过程的调试 支持LD_DEBUG环境变量(glibc下提供给加载器便于调试的一个环境变量): 常用的使用方法: LD_DEBUG=help XXX XXX可为任意字符串,即可调出帮助信息: LD_DEBUG=libs xxx xxx为可执行二进制文件,显示所依赖库的文件路径: 此外还可以显示重定位.符号表.依赖库版本匹配信息等:

ServiceModel 元数据实用工具 (Svcutil.exe)

ServiceModel 元数据实用工具用于依据元数据文档生成服务模型代码,以及依据服务模型代码生成元数据文档 一.SvcUtil.exe ServiceModel 元数据实用工具可在 Windows SDK 安装位置中找到,具体位置为 C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin 功能 下表概括了此工具提供的各种功能,以及论述如何使用该工具的对应主题. 任务 主题 依据运行的服务或静态元数据文档生成代码 根据服务元数据生成 WCF 客户端 从

C++的开源跨平台日志库glog学习研究(一)

作为C++领域中为数不多的好用.高效的.跨平台的日志工具,Google的开源日志库glog也算是凤毛麟角了.glog 是一个C++实现的应用级日志记录框架,提供了C++风格的流操作. 恰巧趁着五一我也学习研究了这个glog库,写个总结如下.走过路过的的各位牛人.高手可以忽略这篇文章了. 从code.google.com下载源码(在这里),在Visual Studio 2010中打开工程,如下: 可见只有四个工程,其中libglog和libglog_static分别是Windows下的动态库和静态