草庐IT

boost-pool

全部标签

c++ - boost 最佳实践?

我已经使用了相当多的Boost图形库,但其余部分用得不多。我经常在这里看到使用Boost的某些部分的建议(例如,Boost的各种智能指针)。显然Boost很好用。它也很大或多种多样。有谁知道常见问题解答或体面的最佳实践文档可以帮助知识渊博的C++程序员更好地使用Boost? 最佳答案 您可能会找到https://stackoverflow.com/questions/379290/how-to-learn-boost有用。但总的来说,请记住Boost不是一个库,而是一个库的集合。这意味着您可以而且应该使用它的一部分,但可能不是全部。

c++ - 使用默认值而不是异常来 boost numeric_cast<>?

每当boost的numeric_cast转换失败,抛出异常。boost中是否有类似的模板让我指定一个默认值,或者在这种情况下捕获异常是我唯一能做的?我不太担心所有额外异常处理的性能,但我宁愿使用标准模板也不愿编写无用的包装函数。另外,根据以往的经验,我认为boost很有可能真的有我想的,只是一直没有找到。 最佳答案 numeric_cast函数只是调用boost::numeric::converter具有默认参数的模板类。其中一个参数是OverflowHandler,默认值为def_overflow_handler,但您可以指定si

c++ - Boost weak_ptr在多线程程序中实现资源池

我正在考虑使用boost::weak_ptr来实现一个对象池,这样当没有人使用其中一个对象时,它们就会被回收。不过,我担心的是,它是一个多线程环境,而且似乎在指向超出范围的对象的最后一个shared_ptr与从weak_ptr构造的新shared_ptr之间存在竞争条件。通常,您会使用锁或其他东西来保护此类操作;然而,这里的重点是您不知道shared_ptr何时可能超出范围。我对boost::shared_ptr和boost::weak_ptr有什么误解吗?如果没有,有人对做什么有什么好的建议吗?谢谢。安德鲁 最佳答案 要使用wea

c++ - Boost::Signals 的意义何在?

首先,我是一个绝对的编程初学者,所以不要太取笑我。我见过的唯一用于信号的是GUI工具包,而GUI工具包都带有自己的信号。那么,Boost:Signals甚至可以与这些GUI工具包一起使用吗?这是个好主意吗?信号还有哪些其他应用? 最佳答案 Signals是一种事件消息传递实现,很像Smalltalk/ObjectiveCMessages或各种其他(例如C#)语言中的Events。您可以将它们用于各种各样的任务,请查看ObserverPattern为什么要使用观察者模式?好处主要是组织性的,当您使用大型应用程序时,应用有助于保持开发团

c++ - 为什么 boost 推荐使用核心函数而不是成员函数?

在boost.geometry的文档中它指出Note:preferusingx=bg::get:(point1);(asopposedtox=point1.get();)我在boost文档的其他地方看到过这个。我的问题是为什么?这是最佳实践、性能还是一些怪癖?它是通用规则还是特定于该库? 最佳答案 它本身不是boost,而是现代C++API设计。由于不需要成员函数,您可以调整自己的类甚至第三方库类型以与您选择的boostApi一起使用。(这样您就可以将第三方库中的类型序列化为Boost序列化存档)。此外,通过使函数成为自由函数,可以

c++ - 正确的 BOOST_FOREACH 用法?

当使用BOOST_FOREACH时,下面的代码安全吗?BOOST_FOREACH(conststd::string&str,getStrings()){...}...std::vectorgetStrings(){std::vectorstrings;strings.push_back("Foo");...returnstrings;}或者我应该在调用BOOST_FOREACH之前获取容器的拷贝,例如:conststd::vectorstrings=getString();BOOST_FOREACH(conststd::string&str,strings){...}在第一个示例中,B

c++ - boost::thread 没有所有的 boost ?

有没有办法在没有整个boost库的情况下使用boost的线程功能?为此,至少需要哪些h和cpp文件?谢谢 最佳答案 您需要使用boostbcp该工具将仅复制您选择的任何库所需的boost部分。 关于c++-boost::thread没有所有的boost?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3835009/

c++ - boost::signals2 对于简单的应用程序是否矫枉过正?

在限制为C++03的环境中,boost::signals2与boost::function一起使用和boost::bind在组件之间实现一个简单的消息传递系统。它工作得很好,我没有任何问题。但是,在另一个环境中C++11完全支持,是boost::signals2对非常简单的应用程序杀伤力过大?澄清一下,我指的是以下内容:单线程所有信号的返回类型都是void性能是这个应用程序的关键,所以boost::signals2的所有奇迹应用程序不需要可能弊大于利。现在,只有一个std::vector处理这个,然后切换到其他东西,比如boost::signals2如果认为合适,将非常简单。

c++ - 如何使用 bcp 提取 boost::filesystem

我正在尝试创建包含文件系统模块的boost库的一个子集,因此我可以将该子集包含在我的项目存储库中。在我手动复制.lib文件之前,我遇到了链接器错误。我在Windows764位上使用VisualStudio2013。我已经通过以下步骤使用bcp成功提取了boost/algorithm/string.hpp及其依赖项:从boost.org下载(v1.57.0)。提取。然bootstrap.bat然后b2.exe如GettingStartedonWindows所述.(我不知道b2对我的目的是否必要。)通过打开命令提示符构建bcp工具,我在其中提取了boost存档,然后运行bjamtools\

c++ - Boost.Python 自定义转换器

我有一个类以vector作为参数(二进制文件内容)。我想将python'str'类型转换为unsignedcharvector,但仅限于我的一个类方法。BOOST_PYTHON_MODULE(hello){class_("Hello").//Thismethodtakesastringasparameterandprintit.def("printChar",&Hello::printChar)//Thismethodtakesavectorparameter.def("storeFile",&Hello::storeFile)}使用自定义转换器似乎是我所需要的,但如果我修改我的boo