草庐IT

ZN5boost

全部标签

c++ - 带有 LD_PRELOAD 和 boost::interprocess 的 mmap() 不起作用

我正在尝试通过LD_PRELOAD替换预先确定的fd上的原始mmap()系统调用,以便调用它的进程可以读取共享内存对象之前由另一个进程使用boost::interprocess创建。一切顺利,除了当我最终尝试读取mmap内存时。在这种情况下,第一个进程会因段错误而中止。可能是什么原因?我不需要共享内存对象的写权限。这是预加载库中的代码:void*mmap(void*start,size_tlength,intprot,intflags,intfd,off_toffset){staticvoid*(*o_mmap)(void*,size_t,int,int,int,off_t)=o_mm

c++ - 使用boost::thread的Actor计算模型

我正在尝试使用boost::thread在C++上的线程上实现Actor计算模型。但是程序在执行过程中抛出了奇怪的异常。异常不稳定,有时程序会以正确的方式工作。这是我的代码:actor.hppclassActor{public:typedefboost::functionJob;private:std::queued_jobQueue;boost::mutexd_jobQueueMutex;boost::condition_variabled_hasJob;boost::atomicd_keepWorkerRunning;boost::threadd_worker;voidworker

c++ - 将 C++11 regexp 与 gcc 4.8.2 一起使用时出现奇怪的结果(但适用于 Boost regexp)

这个问题在这里已经有了答案:Isgcc4.8orearlierbuggyaboutregularexpressions?(3个答案)关闭8年前。我尝试使用C++11的正则表达式,但即使在简单的示例中也失败了。从外面看,它似乎只是比较字符串,例如:std::regex_match(std::string{""},std::regex{"a?"})//false(???)std::regex_match(std::string{"a?"},std::regex{"a?"})//true(???)相比之下,Boost的正则表达式库的行为符合我的预期:boost::regex_match(st

c++ - 如何在 Boost 中对多边形进行三角剖分?

使用Boost对多边形进行三角剖分的最佳方法是什么?我使用Boost.polygon.我目前的算法:根据我的多边形顶点计算voronoï图。为每个单元格边创建一个有向多边形边(这将为每个单元格边创建两个有向多边形边)遍历所有创建的边以创建三角形(不简单)有更好的解决方案吗?编辑:我刚刚意识到可以以一种特殊的方式遍历单元格以直接创建三角形(3个相邻单元格创建一个三角形)。 最佳答案 主要思想是遍历Voronoi顶点,并根据入射到Voronoi顶点的每个单元格的生成点创建一个三角形。在度数>3的退化顶点的情况下,您将需要生成多个三角形,

c++ - boost 变体对常用方法的简单调用

我有两个指针,只能设置其中一个,所以我正在考虑使用boost::variant,比如说:boost::variantshared_ptr>.类型1和类型2不同,但它们共享一些功能。例如,两者都有方法IsUnique.如果我有检查初始化的代码:ASSERT(type1!=nullptr||type2!=nullptr);ASSERT(type1==nullptr||type2==nullptr);ASSERT(type1==nullptr||type1->IsUnique());ASSERT(type2==nullptr||type2->IsUnique());我希望能够用尽可能接近的东

c++ - 如何使用常规 makefile 构建依赖于 boost 的项目?

我正在做一个c++项目,我们最近需要在其中包含一小部分boost。boost部分真的很小(Boost::Python),因此,使用bjam来构建一切看起来有点矫枉过正(此外,从事该项目的每个人都对make感到满意,并且对jam一无所知)。我已经做了很多测试,但我找不到将前面提到的库包含在我的makefile中并使构建成功的方法。非常感谢您的所有帮助。:) 最佳答案 您可以使用Boost的bcputility仅提取您需要的Boost子集。这将最大限度地减少构建时间和大小。不过,这并没有回答您的问题。您可能需要考虑单独构建Boost.P

c++ - 如何防止 boost::optional<T> 被错误地构造为 0?

boost::optional(1.51)提供了一种构造对象的方法,这对我的用户来说非常危险,我想避免这种情况。假设我有自己的整数类,我想传递一个可选的此类整数并将其存储在某个类中:classmyint{public:intm_a;myint(intr_a):m_a(r_a){}};structmyclass{boost::optionalcontent;myclass(constboost::optional&arg):content(arg){}};现在,用户将如何使用该类:myclass(myint(13));//correctusemyclass(boost::none);//

c++ - 使用 boost spirit x3 编译时间

我正在尝试掌握新的SpiritX3(boost1.61.0)。我的机器是运行Linux的MacBookPro(i7-4750HQ)。使用Spirit的第2版后,我习惯了较长的编译时间,但这感觉不对。对于表达式解析器的以下第一步,编译需要20秒。我以为X3会更快,这合理吗?我的代码不是最理想的吗?编译器设置(clang3.8.0)clang++-c-pipe-std=c++14-ftemplate-depth=512-g-w-Wall-Wno-unused-parameter-fPIC代码://#defineBOOST_SPIRIT_X3_DEBUG#include#include#in

在 Boost 模板参数中发现 C++ 奇怪的语法

我在查看Boost中的“Function”类文档时,偶然发现了这个:boost::functionf;我必须承认这种语法让我非常困惑。这怎么可能是合法的C++?引擎盖下有什么技巧吗?此语法是否记录在任何地方? 最佳答案 [编辑]这是对作者最初未经编辑的问题的回答,该问题实际上是两个问题。Imustadmitthissyntaxishighlyconfusingforme.HowcanthisbelegalC++?:)Isthereanytrickunderthehood?Isthissyntaxdocumentedanywhere?

c++ - Qt 在信号/槽中使用 boost::shared_ptr

是否可能,如果可能,我如何在Qt中创建一个信号/插槽,它是对shared_ptr的const引用?我想要一个看起来像这样的信号:voidsignal(shared_ptrconst&)我知道如何在没有常量引用的情况下做到这一点,这就是类型shared_ptr但出于效率*的原因,我想避免复制。引用类型的相同语法不起作用:Q_DECLARE_METATYPE(shared_ptrconst&)qRegisterMetaTypeconst&>();许多标准API都有QStringconst&所以我认为这基本上是可能的,我只是想不出语法。**性能的最大问题不是复制时间,而是当对象被复制到每个接