boost库介绍
学boost库之前,应该先对STL(Standard Template Library)标准模板库已经有所了解,boost是对STL的一个延续和补充,STL封装了很多非常好用的模板,如vector、string、vector等。这些都是写复杂一点的程序逻辑必备的模板。而boost库,在STL的基础上增加了很多更强大的功能。至于多强大,大家的评论基本是包罗万象,有什么常见的数据结构或常见的算法,都可以来boost库来找一找相关的。
ps:STL库是在C++编译器自带的,无论你是g++还是msvc,但boost是需要下载引用到工程里的。
boost下载
从boost官网www.boost.org,download
→
\rightarrow
→Old Boost Releases
→
\rightarrow
→version history下载boost_1_76_0版本的boost压缩包。
解压后,文件目录如下。
如何在windows使用boost库,先参考Getting Started on Windows官方教程,如官网所说,boost大多数库是可以通过直接包含库路径编译的,不需要用b2(boost.build)工具来单独编译。什么库需要,什么不需要参考getting started教程。
The first thing many people want to know is, “how do I build Boost?” The good news is that often, there’s nothing to build.
配置vscode
这里我将boost文件放在了E:\ThirdCPlusLib目录下。
新建一个空白文件夹,用vscode打开,新建一个cpp文件,将getting started教里测试lambda的代码赋值粘贴上去。
#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>
int main()
{
using namespace boost::lambda;
typedef std::istream_iterator<int> in;
std::for_each(
in(std::cin), in(), std::cout << (_1 * 3) << " " );
}
然后我们配置task.json文件,成功编译的重点在于arg参数的
-I "E:\\ThirdCPlusLib\\boost_1_76_0"
(-I是大写)。
这里的-I其实就是g++ -I 路径
,意思是编译程序时按照-I指定的路径去搜索头文件。
ps:要区分大写的-I和小写的-l,大写的-I可以理解为include,后面跟的是路径。小写的-l可以理解为library,后面跟的是库的名字,和-L(路径)配合使用。
这里我是修改了default的g++ build task,除了加了-I参数 ,还修改了label,和detail参数,只是为了避免我用错了task,没有功能上的作用。
vscode上的界面操作:Terminal
→
\rightarrow
→Configure Default Build Task…
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件with boost lib",
"command": "D:/mingw64/bin/g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-I",
"E:\\ThirdCPlusLib\\boost_1_76_0"
],
"options": {
"cwd": "D:/mingw64/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "编译器: D:/mingw64/bin/g++.exe with boost lib"
}
]
}
修改了编译的参数,我们需要修改一下c_cpp_properties.json文件,ctrl
+shift
+p
,找到C/C++:Edit Configurations(UI)
或者C/C++:Edit Configurations(JSON)
内容效果是一样的,只不过一个是UI界面,一个是json文件。
修改这个文件其实不影响编译效果,影响的是vscode IntelliSense,正确设置,方便我们编写代码和调试。
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"E:\\ThirdCPlusLib\\boost_1_76_0"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "D:/mingw64/bin/g++.exe",
"cStandard": "c99",
"cppStandard": "c++11",
"intelliSenseMode": "windows-gcc-x64"
}
],
"version": 4
}
主要关注下面这几个参数:
includePath:添加上我们的boost库路径,这样再Include的时候,编辑器不会报错
compilePath:确定编译器的路径,用哪个编译器选哪个,不然在追踪头文件时,会发现一些标准库文件的路径的很奇怪。
cStandard和cppStandard: C和C++的标准,根据自己项目需求选。
intelliSenseMode:根据编译器和系统位数选择。
测试
设置好以后,打开刚刚编辑的cpp文件,Terminal
→
\rightarrow
→Run Task…,找到我们编辑过的Task,编译成功后会在目录下生成一个和cpp文件同名的exe文件。
vscode中打开一个powershell终端,Terminal
→
\rightarrow
→New Terminal,运行exe文件。
如果如下生成结果,及boost配置成功。