草庐IT

ZN5boost

全部标签

c++ - 什么是 C++ 运算符 ->。 (箭头点运算符)在 boost 文档中找到?

我正在阅读boost文档并在http://www.boost.org/doc/libs/1_54_0/doc/html/lambda/le_in_details.html查看以下内容:OperatorsthatcannotbeoverloadedSomeoperatorscannotbeoverloadedatall(::,.,.*).Forsomeoperators,therequirementsonreturntypespreventthemtobeoverloadedtocreatelambdafunctors.Theseoperatorsare->.,->,new,new[],

c++ - boost::stable_vector 的 capacity 成员函数不返回分配的容量

考虑以下代码。#include#include#includeintmain(){boost::container::stable_vectorvec;vec.reserve(10);std::cout在运行它时(在g++/Linux上),输出是:容量=4294967286(即2^32-10)如果我用上面的std::vector替换boost::container::stable_vector,输出是:容量=10我知道它也可能是capacity=20,或capacity=64或其他,但这仍然是理智的行为。capacity()为stable_vector返回的似乎是(2^32-N),N是

c++ - 一旦成为标准的一部分——boost 库会失去其 boost 命名空间并移至 std 吗?

一旦Boost库(我读到十个Boost库被认为是标准库的一部分)成为标准库的一部分-它会保留它的boost命名空间还是代码最终会在std中命名空间?如果是后者,您将如何解决代码中潜在的命名空间冲突问题。干杯。 最佳答案 Boost库中符合标准的项当然会包含在命名空间std中。然而,我不认为他们的Boost对应物会以任何方式改变:如果我们以bind为例,编译C++0x的人将使用std::bind而编译C++03的人将继续使用boost::bind。我可能是错的,但根据我的理解,是来自boost库的概念使其符合标准,而不是确切的规范。据

c++ - boost::asio 线程池与 io_service_per_cpu 设计

目前我不确定,我尝试制作一个高性能服务器,我有一个6核CPU,所以如果我使用“io_service_per_cpu”设计,我有6个io_service。我已经听说线程池设计不是最好的,但我不确定。你有什么知识?有人已经对每个进行了压力测试,还是其他? 最佳答案 根据我的经验,按照以下顺序进行异步应用程序设计要容易得多:单线程和单io_service多个线程,每个线程从单个io_service调用io_service::run()。使用strands用于需要访问共享数据结构的处理程序。io_service每个cpu在对您的应用程序进行

c++ - 为什么 boost::ptr_list 使用底层 void *?

boostptr_listdocumentation声明容器使用底层std::list.为什么他们使用这种类型而不是更专业的std::list? 最佳答案 可能是为了减少模板实例化的数量。如果它使用std::list,然后每次使用ptr_list还将实例化std::list.如果您使用ptr_list,那将是很多实例化很多。 关于c++-为什么boost::ptr_list使用底层void*?,我们在StackOverflow上找到一个类似的问题: https

c++ - 如何实现 boost::variant 派生类?

我已经尝试了几个小时来编写一个派生自boost::variant的类。但是我不明白这是什么问题(我不明白编译错误是什么意思)。实现干净的boost::variant派生类的规则是什么?#includeclassMyVariant:publicboost::variant{public:MyVariant():boost::variant(){}templateMyVariant(T&v):boost::variant(v){}templateMyVariant(constT&v):boost::variant(v){}};intmain(){MyVarianta;MyVariantb=

c++ - boost spirit skipper 问题

我在使用boostspiritskippers时遇到了麻烦。我需要像这样解析一个文件:ROWintint[int,int]int[int,int]...我能够毫无问题地解析它(感谢stackoverflow;)只有当我在第一个int之后添加一个'_'时。事实上,我认为skipper在第一个int之后吃掉行尾,所以第一个和第二个(在第二行)看起来只有一个int。我不明白如何保持eol但吃空间。我找到了使用自定义解析器的示例,例如here和here.我尝试了qi::blank,一个带有一条规则的自定义解析器lit('')不管我用什么skipper,space和eol总是吃。我的语法是:一行

C++ boost::split 首先

我有一个拆分字符串的函数:boost::split(r,lines[i],boost::is_any_of("="));以上代码按每个“=”拆分字符串我想将此代码转换为仅按一个“=”拆分。示例:__ga=223478=90234=234拆分后:__ga223478=90234=234如何做到这一点? 最佳答案 Boost对此不是必需的。一个可能的解决方案是使用std::string::find_first_of()并使用std::string::substr()创建两个字符串结果:#include#includeintmain(){

c++ - BOOST_CHECK_CLOSE 即使两个值低于阈值也会失败

我正在使用boost执行单元测试。当我使用BOOST_CHECK_CLOSE时,我收到此失败消息:difference{inf%}{-6.9388939e-18}and(0.0){0}exceeds1.0000000000000001e-05%这对我来说听起来很奇怪,因为-6.9388939e-18和0.0之间的差异低于1.0000000000000001e-05%。此外,我不明白为什么它说差异是无限的。知道这种行为背后的原因吗? 最佳答案 BOOST_CHECK_CLOSE使用Knuth的公差谓词来比较float,即abs(x-y

c++ - 使用 boost c++ ublas 矩阵和 vector 类型进行元素运算

我想对boost矩阵和vector类型执行逐元素函数,例如对每个元素取对数,对每个元素取幂,应用特殊函数,例如gamma和digamma等(类似于matlab对应用于矩阵和vector的这些函数的处理。)我想编写一个辅助函数,为每个所需的函数强制执行此操作就足够了,但这似乎很浪费。同样,boostwiki提供了一些代码到vectorizestandardfunctions,但这看起来相当复杂。建议使用valarray,但我想避免在数据类型之间进行转换,因为我需要ublas数据类型用于其他操作(矩阵乘积、稀疏矩阵等)非常感谢任何帮助。 最佳答案