草庐IT

ZN5boost

全部标签

c++ - 通过 BOOST_FOREACH 使我的 C++ 类可迭代

我有一个类,我想公开一个结构列表(其中只包含一些整数)。我不想让外界修改这些数据,只是遍历它并读取它们示例:structTestData{intx;inty;//otherdataaswell}classIterableTest{public://exposeTestDatahere};现在在我的代码中我想像这样使用我的类:IterableTesttest;BOOST_FOREACH(constTestData&data,test.data()){//dosomethingwithdata}我已经读过这篇文章http://accu.org/index.php/journals/1527

c++ - boost::multi_array View 和子数组之间有什么区别

在查看文档后,我无法理解这一点。我可以写这样的代码typedefboost::multi_arraydata_t;//3d--typedefdata_t::array_view::typedata_3d_view_t;//2d--typedefdata_3d_view_t::referencedata_2d_subarray_t;typedefdata_t::array_view::typedata_2d_view_t;然后我可以通过data_2d_subarray_t或data_2d_view_t类型访问二维切片。它们有什么区别?我可以用一个做什么,而我不能用另一个做什么?有什么性能

c++ - boost::asio::io_service 定时器和帖子占用的队列长度

我是boost::asio的新手,但我正在从事一个已经存在几年并广泛使用asio的项目。我目前的任务是添加关于系统正在做的各种事情的定期指标。其中一项指标是观察boost::asio::io_service工作队列和定时器队列在任意运行时间段的深度。所以我需要能够询问boost:asio::io_service对象它的队列中有多少东西。为了说明我的要求,请考虑以下内容:boost::asio::io_serviceasio_service;asio_service.post(boost::bind(do_work,"eat"));asio_service.post(boost::bin

c++ - 如何配置 boost 日志,用于旋转和附加写入?

如何配置boost日志,用于旋转和追加写入?重启程序后,不要清除日志文件。intinit_log(){typedefsinks::synchronous_sinkfile_sink;boost::shared_ptrsink(newfile_sink(keywords::file_name="app.log",//onlyonefiles//keywords::open_mode=(std::ios::out|std::ios::app),//isnotappendkeywords::open_mode=(std::ios::out|std::ios::app),//isnotrota

c++ - 对 boost 库的依赖没有完整路径

我的动态库已成功构建,依赖于使用自定义前缀(./b2install--prefix=PREFIX)构建和安装的boost库。但是,当我在我的库上运行otool-L时,我得到如下输出:...libboost_regex.dylib(compatibilityversion0.0.0,currentversion0.0.0)libboost_system.dylib(compatibilityversion0.0.0,currentversion0.0.0)...与其他依赖项不同,它没有提供这些boost库的完整路径。当应用程序加载我的库时,这会导致运行时错误。我知道可以使用install

c++ - 为boost创建的共享内存设置权限

我们像这样打开一个由另一个进程创建的boost共享内存boost::interprocess::managed_shared_memorysegment(boost::interprocess::open_only,"SharedMem");但是如果创建共享内存的进程是root用户,那么读取它的进程,如果是普通用户,将会失败,原因如下:terminatecalledafterthrowinganinstanceof'boost::interprocess::interprocess_exception'what():Permissiondenied我应该怎么做才能避免这种情况?那就是把

c++ - 用于进程间共享内存的非 Boost STL 分配器?

由于我工作的政策,我无法使用高于1.33.1的Boost版本,也无法使用高于4.1.2的GCC版本。是的,这是垃圾,但我对此无能为力。Boost1.33.1不包含进程间库。也就是说,我的一个项目需要将std::map(或者更可能是std::unordered_map)放入共享内存。当进程由单个进程(“服务器”)加载并由许多其他进程读取时,它只会被写入/修改一次。我以前没有做过共享内存IPC,所以这对我来说是一个相当新的领域。我查看了shmget(),但似乎我无法持续使用相同的共享内存key进行分配(因为我认为STL容器分配器需要)。是否有任何其他使用共享内存的NON-BOOSTSTL分

c++ - 在 Boost::range 中组合适配器

我开始使用Boost::Range以获得pipelineoflazytransformsinC++.我现在的问题是如何将管道分成更小的部分。假设我有:intmain(){automap=boost::adaptors::transformed;//shortenthenameautosink=generate(1)|map([](intx){return2*x;})|map([](intx){returnx+1;})|map([](intx){return3*x;});for(autoi:sink)std::cout我想用magic_transform替换前两个map,即:intmai

c++ - 标准库中 boost::make_transform_iterator 的等价物是什么?

处理constvector时,以下内容不起作用:conststd::vectorv;v.push_back("test");//error:vcannotbemodified相反,您必须在构造它的同一行上初始化vector。然而,即使有这个限制,boost::make_transform_iterator使得在将它们插入v之前对另一个vector的元素做一些事情变得容易。在这个例子中,convert是一个一元函数,返回输入元素的转换版本:autobeg=boost::make_transform_iterator(args.begin(),convert);autoend=boost:

c++ - 具有 boost 变体的静态多态性单访问者与多访问者与动态多态性

我正在比较以下C++多态性方法的性能:方法[1]。使用boost变体的静态多态性,每个方法都有一个单独的访问者方法[2]。使用boost变体的静态多态性,单个访问者使用方法重载调用不同的方法方法[3]。普通的旧动态多态性平台:-Intelx8664位RedHat现代多核处理器,32GBRAM-gcc(GCC)4.8.1与-O2优化-boost1.6.0一些发现:方法[1]似乎明显优于方法[2]和[3]大多数时候方法[3]优于方法[2]我的问题是,为什么方法[2]在我使用访问者但使用方法重载调用正确方法的地方比虚拟方法性能差。我希望静态多态性比动态多态性表现得更好。我知道在方法[2]中传