过去我听过很多关于 Boost 的好评,我想我会试一试。所以我从 Ubuntu 9.04 的包管理器中下载了所有需要的包。现在我很难找出如何实际使用这些该死的库。
有谁知道关于 Boost 的一个很好的教程,从 Hello World 到高级主题,还包括如何在 ubuntu 上使用 g++ 编译程序?
过去我听过很多关于 Boost 的好评,我想我会试一试。所以我从 Ubuntu 9.04 的包管理器中下载了所有需要的包。现在我很难找出如何实际使用这些该死的库。
有谁知道关于 Boost 的一个很好的教程,从 Hello World 到高级主题,还包括如何在 ubuntu 上使用 g++ 编译程序?
同意;boost网站大部分都有很好的教程,按子库分类。
至于编译,80% 的库实现是在头文件中定义的,这使得编译变得微不足道。例如,如果您想使用 shared_ptr,您只需添加
#include <boost/shared_ptr.hpp>
并像往常一样编译。无需将库路径添加到您的 g++ 命令,或指定 -llibboost。只要 boost 目录在您的包含路径中,就一切就绪。
从升压文档:
唯一需要编译和链接的库如下: 唯一必须单独构建的 Boost 库是:
- Boost.文件系统
- Boost.IOStreams
- Boost.ProgramOptions
- Boost.Python(在构建和安装之前请参阅 Boost.Python 构建文档)
- 升压正则表达式
- Boost.序列化
- 升压信号
- Boost.Thread
- 升压波
一些库具有可选的单独编译的二进制文件:
- Boost.DateTime 有一个二进制组件,仅当您使用其 to_string/from_string 或序列化功能,或者您的目标是 Visual C++ 6.x 或 Borland 时才需要该组件。
- Boost.Graph 还有一个二进制组件,仅当您打算解析 GraphViz 文件时才需要它。
- Boost.Test 可以在“仅头文件”或“单独编译”模式下使用,但建议在严重使用时单独编译。
因此,如果您正在使用列出的库之一,请使用入门指南来帮助您开始编译和链接到 Boost。
Boost 网站有一些很好的教程,它们只是有点隐藏。
图书馆文档好坏参半。有些很好,但有些更多的是参考而不是指南。(部分)Boost 库的最佳指南是Beyond the C++ Standard Library一书。至少,引言给出了许多库的一段描述。从那里,您可以决定哪个库对您当前的需求最重要,如果它在书中,请阅读其中的章节,或阅读网站上的文档。
如果您阅读德语,则有一个很好的在线指南。谷歌翻译做得很好,像我这样不会说话的人也能理解。
此外,除非您有丰富的 C++ 经验,否则我会先从更简单的库(例如 smart_ptr、tuple、conversion、tokenizer、regex、date_time、test)开始,然后再尝试更复杂的库(bind、variant、any),或真正先进的(概念、MPL、Fusion)。
使用基于 Ubuntu 的 Easypeasy 1.1(用于上网本),我相信我能够使用 Synaptic Package Manager 安装 libboost-dev。然后只需添加:
#include "boost/foreach.hpp"
我能够替换现有应用程序中的现有行(它有一个与 boost 无关的 Ask 类):
for (std::vector<Ask*>::iterator ii=ui.begin(); ii!=ui.end(); ++ii)
std::cout << (*ii)->prompt() << (*ii)->answer() << std::endl;
和:
BOOST_FOREACH (Ask* ii, ui)
std::cout << ii->prompt() << ii->answer() << std::endl;
据我了解,这是仅标题功能。我还没有使用任何需要更改链接时间的东西。
我只是在看那个德语 boost guide,发现也有一个英文的(同一本书)。看起来还不错,刚看了介绍页,很有用
到目前为止,我读过的最好的教程是这两本书:
这些库附带文档,其中许多都有教程作为文档的一部分。刚开始阅读。
Boost 既不是编程语言也不是应用程序框架——因为它只是库的集合,所以没有 Boost 'Hello World' 程序这样的东西。Boost 中的大多数库或多或少都可以独立使用,它们的大小从一个函数到可以独立的大量库不等。
了解 Boost 的最佳方式就是在编写新代码时尝试使用它。smart_ptr
尽可能使用;下次你想做编译时工作时使用 MPL。Boost 有很多种类,但您可能应该开始查看实用程序部分;这些是最轻量级和最常用的库。