【发布时间】:2013-01-05 12:18:45
【问题描述】:
如果必须包含的头文件数量尽可能少,我认为 C++ 库是“优雅的”。
我知道已经存在固定大小的分配器,例如 Loki::SmallObjectAllocator 和 boost::pool。虽然两者都很优秀,但我认为它们并不优雅,也不容易无缝集成到项目中。
大多数时候,我只需要 boost 库的一小部分,但我必须在我的机器上安装整个库。例如,如果我想使用 boost::pool,我希望只包含 ONE 头文件boost_pool.h 并且工作完成。因为我认为固定大小的分配器不应该如此依赖于太多其他组件。在我看来,理想的代码应该如下所示:
#include <boost_pool.h>
int main()
{
boost::pool<int> p;
int* v = p.allocate();
}
有这样的图书馆吗?
【问题讨论】:
-
你看过bcp吗?不完全相同,但它可以很容易地用作将所有内容推入单个标题的起点。
-
"我希望只包含一个头文件
boost_pool.h" - 那么,做一次工作并将所有相关的东西放在那里吗?说真的。 -
似乎您可以在很久以前安装 boost,但是您只需要一件事,并且您认为不值得付出努力。每次你需要提升的东西时都是一样的。大概,是时候安装它了?
-
您正在寻找的词可能是“独立”而不是“优雅”。 Boost 以不同的方式看待“优雅”——代码在不同的 Boost 组件之间共享,而不是被需要做同样事情的每个组件复制。结果当然是 Boost 内部的依赖关系。
-
@AndyT:当然,Boost 中一些常用的东西在不同平台上的定义不同。我很确定您可以编写一个池分配器(就此而言,有很多 Boost 功能),而无需繁重的平台隔离层。但是,一旦您获得一个功能齐全的平台隔离层,您通常会使用它,而不是重新实现每个组件所需的少量平台隔离。同样,对于像
BOOST_FOREACH这样的便利工具,一旦你拥有它们,你就不会为了让你的 boost 组件更加独立而避免使用它们。
标签: c++ performance object memory-management c++11