草庐IT

boost-preprocessor

全部标签

c++ - boost::asio::streambuf 缩小到适合?

boost::asio::streambuf的大小会一直增加,直到consume()被调用。即使在调用consume()之后,底层缓冲区使用的内存也永远不会被释放。例如:下面的代码首先创建了一个没有指定max_size的streambuf。然后它将14Mb数据转储到streambuf中。然后它消耗所有这些14MB数据。在2000点,streambuf.size()为0,但“top”显示进程仍占用14MB内存。我不想指定max_size。streambuf为空后,有什么方法可以收缩它吗?#include#include#includeintmain(){{boost::asio::str

c++ - boost::thread 和 std::thread 之间的区别

我有一个使用boost::thread的地方(例如使用boost::asio)std::vector>threads;for(std::size_ti=0;ithread(newboost::thread(boost::bind(&boost::asio::io_service::run,io_services_[i])));threads.push_back(thread);}如果我尝试将它与std:thread一起使用,我会得到编译错误:std::vectorthreads;for(std::size_ti=0;iioServices.size();++i){std::thread

c++ - BOOST MPL 添加两个 list_c 对象导致意外行为

我有以下代码:#include#include#include#include#include#include#include#include#includeusingnamespaceboost::mpl;typedeflist_cevens;typedeflist_cprimes;typedeflist_csums;typedeftransform>::typeresult;BOOST_MPL_ASSERT((equal>));intmain(){std::cout它编译,所以BOOST_MPL_ASSERT成立。但是,运行它时,main函数中的断言失败。这是什么意思?包含相同元素

c++ - boost::spirit ,如何获取占位符的 "value"

我正在尝试构建一个接受格式为“/integer/(/integer/)”的字符串并生成一个std::tuple的解析器现在我有:qi::rule()>parser=(qi::int_>>'('>>qi::int_>>')')[_val=std::make_tuple(qi::_1,qi::_2)]无法编译,因为占位符qi::_i的类型不正确。如何从占位符中“提取”基础值? 最佳答案 嗯,你可以只使用自动属性传播(又名“自动规则”):#include#include#includenamespaceqi=boost::spirit::

c++ - 类型转换 boost::fusion::vector

boost::fusion::vector的编号形式看起来像templateclassvector1;templateclassvector2;等等可变参数形式看起来像templateclassvector;那么有没有办法在编译时将boost::fusion::vector从编号形式转换为可变参数形式? 最佳答案 您真的需要编译时转换吗?两者之间存在运行时转换,所以我看不出有必要:vector2a(13,'b');vectorb=a;不过我试着玩玩。我对我的回答不满意,但也许您可以继续努力以找到更好的答案。我希望能够使用一些元函数,

c++ - Boost 无法打开文件, 'libboost_filesystem-vc100-mt-gd-1_47.lib'

我已经用谷歌搜索了几个小时的错误,但没有得到太多信息。我已将该项目链接到我的VisualStudios(2010年和2012年)项目中,因为这似乎已经解决了与此类似的其他所有人的问题。但是,我仍然无法从boost的网站上获取我的示例代码并继续出现该错误。文件libboost_filesystem-vc100-mt-gd-1_47.lib在我的C:\ProgramFiles(x86)\boost\boost_1_47\lib路径中。这是我正在尝试测试并启动和运行的代码。#include#includeusingnamespaceboost::filesystem;intmain(inta

c++ - Boost.Asio - 确保对方收到数据

我正在使用boost::asio并向客户端发送列表并在完成后关闭套接字。不知何故,客户端有时在收到所有内容之前收到文件结束错误。我猜这与服务器在发送最后一个列表条目后立即关闭套接字有关。async_send只有在数据发送成功后才调用handler,有什么简单的方法可以解决吗?或者我的文件结束错误来自其他原因? 最佳答案 Boost.Asio是基于TCP和UDP套接字的独立于操作系统的抽象层。它们不保证其他应用程序已接收并处理数据。您需要在您的应用程序中包含此逻辑,您可能需要研究OSImodel.如果您在async_send()返回后

c++ - 不满意链接错误 : undefined symbol _ZN5boost6system16generic_categoryEv in java (JNI)

我创建了一个.so文件,其中我根本没有使用boost库(当然早些时候我使用过它),但后来我切换到pthreads并删除了所有头文件和boost.so文件链接生成文件。Java文件编译成功。但是,当我尝试使用java-Djava.library.path=libs/-cpbuild/发送它给我以下错误。线程“main”中的异常java.lang.UnsatisfiedLinkError:/home/aahmed/libplxmsg-java/libs/libplxmsgjavaasyncbinder.so:/home/aahmed/libplxmsg-java/libs/libplxms

c++ - boost 随机样本,如 python random.sample

我正在尝试使用C++来模仿pythonrandom.sample(a_set,n_samples)类C++函数setsample(setinput,intn_samples)在我自己写之前,有图书馆在做这件事吗?我的电脑上有boost1.46。 最佳答案 从C++17开始就有了std::sample:std::sample(input.begin(),input.end(),std::back_inserter(out),n_samples,std::mt19937{std::random_device{}()});原始答案如下。我

c++ - boost::optional reference with boost::variant 类型

我目前正在为游戏编写一些代码,其中一部分涉及创建游戏中迄今为止发生的操作的历史记录。此历史记录存储在一个vector中,该vector由state_pair_t的Action对(action_t)和一个Action完成后指向结果游戏状态的指针组成。现在我有一些函数,它从最近的时间点开始查看历史记录并向后迭代,直到找到某种类型的Action,然后返回对该Action的引用。现在我们决定,如果没有找到任何Action,使用boostoptional返回一个no_action并使用boost::optional来处理这些函数可能是一个很好的设计举措应该返回一个值但可能没有要返回的值。当我实际