对于大多数C ++项目,Boost涵盖了许多基础组件,但经常使用的解决方案和习语需要一些锅炉板或地面工作。您认为在每个项目中拥有它并因此将它放在一个小的“库”中是如此重要? 我想到的一些事情:
(最后两个在Loki,但Loki与Boost重叠,人们对使用它犹豫不决。)
编辑:我可能应该补充一点,我不会询问标准库的常用扩展名,例如: copy_if
。
答案 0 :(得分:5)
以上都不是。特别是,绝对不是Singleton类,因为单身人士的使用通常是indication design的flaw。在过去的15年里,我从来没有需要过Singleton课程,而且我在旅途中找到的所有课程都是黑客攻击或者其他方式损害了他们所处系统的稳健性。
一般来说,除了一个好的,符合标准的编译器,希望永远不要停止学习更多关于我的选择语言和不限制我的动作的编码标准,我发现我什么都不需要写完整的系统。
特别值得注意的是,在过去的15年里,我所做的每项工作都明确禁止使用Boost。虽然我在我自己的项目中使用Boost,但在我使用的小工具中,我的生产代码都没有使用它。我是Boost的粉丝,但我并没有真的错过它。现在,在VS2010中支持C ++ 0x,我更想念它。
那就是说,这些年来,我已经建立了一个#include
图书馆,无论我走到哪里,我都会带着有用的小东西和小玩意儿。它包括:
sprintf
std::string
版本
transform_if
copy_if
我很少使用其他一些STL扩展。
答案 1 :(得分:2)
我的小型图书馆,我随身携带的大多数项目都包含非常实用的工具:
答案 2 :(得分:2)
你建议没有。
单身人士是一个可怕的反模式,我在C ++程序中最不想要的就是更多。 如果您对自己的类一直使用RAII,那么您实际上并不需要单独的ScopeGuard类。
工厂基础?它到底会做什么?我真的没有看到工厂之间有足够的共同功能,因此值得投入一个通用的基类。
我不确定any_iterator
你的意思。 :)
对于C ++项目至关重要的事情是人们放入库中的。 如果某些公共库中没有某些东西,那么这是因为它不常见(或者因为它必须针对单个项目进行自定义,因此库版本几乎没有价值)
所以你的问题基本上可以改为“对流行的图书馆有什么明显的补充,但还没有添加到他们身上”,答案显然是“没什么,因为如果这个想法是显而易见,图书馆作家也想到了它,所以他们已经添加了它“
答案 3 :(得分:1)
也许我不像其他人那样编写大量的代码(专业使用C ++六年),但我会选择: 没有 。任何时候我都希望在标准库或Boost中使用成语,这是一个线索,也许这不是最好的方法。通常,您可以通过重写它们来利用现有结构来更简单地表达您的概念。好的代码很容易编码。让Boost背后的天才为你处理复杂的事情。
答案 4 :(得分:0)
环形或循环缓冲区。这是嵌入式系统中经常使用的数据结构。
答案 5 :(得分:0)
答案 6 :(得分:0)
日志记录类(也适用于Gui)
答案 7 :(得分:0)
一个或两个加密库,包含在一个漂亮的界面中。
哈希算法也非常有用。