草庐IT

ZN5boost

全部标签

c++ - 使用 boost::asio 丢弃数据

我在异步模式下使用boost::asio,我想跳过/丢弃/删除通过TCP发送给我的消息。我想这样做是因为我已经阅读了消息的标题,并且我知道我对此不感兴趣。消息可能很大,所以我宁愿不为它分配空间,甚至最好不要将它传输到用户空间。我看到了boost::asio::null_buffers,但它似乎不适用于此处(参见https://svn.boost.org/trac/boost/ticket/3627)。 最佳答案 据我所知,BSD套接字接口(interface)没有提供此功能。您总是必须读入缓冲区。现在,为了不分配巨大的缓冲区,您可以

c++ - `boost::system::error_code`失败时应该提供哪个 `boost::asio::ip::tcp::resolver::resolve()`值?

我想返回一个boost::system::error_code指示主机/服务是否可以解析。主机/服务查找失败可能有多种原因(例如网络连接问题或无效参数)。应该返回什么? 最佳答案 您必须提供错误代码和类别才能创建error_code对象。这是一个示例,假设该错误是由于另一台主机拒绝连接造成的:error_codeec(errc::connection_refused,system_category());returnec;您也可以在使用系统类别时将errno值作为错误代码传递。例如:#include#include#includev

c++ - 如何从 boost 库中取出单个元素(例如 shared_ptr)?

我一直在玩弄一些Boost组件,我认为在我正在从事的项目中唯一直接需要的是boost::shared_ptr。只包含shared_ptr所需的文件会很困难,或者至少只包含Boostsmart_ptr目录的文件到我的项目中?它们似乎对Boost的其他部分有一些外部依赖性-但我认为有一种简单的方法可以只使用Boost库的某些组件,而我错过了它。如果您能告诉我我需要哪些部分或指出一个好的教程,我将不胜感激! 最佳答案 您可以使用bcp工具仅提取所需的header。bcpshared_ptr/foo这会将shared_ptr和所有依赖项复制

c++ - boost .MultiIndex : searching elements using multiple fields

我正在使用Boostmulti_index容器根据2个整数键K1和K2存储对象。我可以轻松地检索满足“K1==X”的所有元素的迭代器,例如,通过获取第一个索引并使用find()函数(K2的同上和值Y),但我正在寻找一种方法在满足K1==X和K2==Y的所有元素上获得一个迭代器。一个明显的解决方案是在满足K1==X的所有元素上获得一个迭代器,然后使用谓词K2==Y构建一个boost::filter_iterator,但是有没有办法只从Boost.MultiIndex做到这一点(也许更有效)?谢谢马修 最佳答案 您可以使用boost::

c++ - 将 boost::multi_array 写入 hdf5 数据集

是否有任何库或header可用于将C++vector或boost::multi_arrays写入HDF5数据集变得容易?我看过HDF5C++示例,它们只是使用c++语法调用c函数,并且它们只将静态c数组写入它们的数据集(请参阅create.cpp)。我是不是忽略了重点!?非常感谢,亚当 最佳答案 下面是N维multi_array的写法HDF5格式的s这是一个简短的例子:#includeusingboost::multi_array;usingboost::extents;//allocatearrayintNX=5,NY=6,NZ=

c++ - 有没有办法将 boost 信号直接连接到另一个信号?

我想知道是否有更好的方法将一个类的boost信号直接连接到另一个类的信号?例如想象一个facadeclass有一群成员提供自己的信号。现在假设外观想要公开这些信号。我通常最终会编写样板方法,然后将其连接为信号处理程序。usingnamespaceboost::signal;classA{public:A(){};virtual~A(){};signalsignalA;};classB{public:B(){};virtual~B(){};signalsignalB;};classFacade{private:A&a;B&b;public:Facade(A&refA,B&refB):a(

c++ - 如何将数据从 `boost::scoped_array`复制到 `std::vector`

vectorvec;boost::scoped_arrayscpaInts;scpaInts.reset(newint[10]);for(inti=0;imethodonevec.assign(scpaInts.get(),scpaInts.get()+10);//=>methodtwo问题一>我想出了两种方法。但我不确定它们是否正确,或者是否有更好的方法来做到这一点。问题2>boost::scoped_array不能获取有效长度是真的吗?谢谢 最佳答案 问题一:两种方法都可以。指向数组元素的指针可以起到随机访问迭代器的作用。这个也

c++ - OpenCV 或 Boost 智能指针

我有一个扩展的图像处理项目,它的大部分功能在很大程度上依赖于OpenCV库,尽管我也使用了一些boost函数。我想开始使用智能指针来替换一些开始引起问题的原始指针。我的问题是要使用哪种类型的智能指针,我的主要选择(我认为)是OpenCVcv::Ptr或其中一种boost变体。我意识到有一个number的questions解释每个boost指针之间的不同,但我希望有人可以解释cv::Ptr与它们的比较并提出任何建议?编辑-我从OpenCVdocs注意到了Ptr类似于boostshared_ptr,本质区别是需要哪些库/包含文件吗? 最佳答案

c++ - boost::variant 访问者选择了错误的重载

为什么下面会打印出"Aboolean!"?我意识到正在进行一些奇怪的转换,因为如果我显式构造一个std::string我会得到正确的行为。但是为什么在下面的情况下重载解析会选择visitor::operator()(bool)?#include#includetypedefboost::varianttype;structvisitor:publicboost::static_visitor{voidoperator()(boolb)const{std::cout我正在运行VisualStudio2012(CTP与否给出相同的结果) 最佳答案

c++ - boost::shared_ptr 和 std::shared_ptr 共存

我们都知道boost和c++11都支持shared_ptr。有些编译器支持c++11,有些则不支持。我想编写我的代码,以便当编译器支持c++11shared_ptr时,它使用std::shared_ptr;如果没有,请使用boost::shared_ptr。这方面的常见/最佳做法是什么?让我将讨论限制在GCC而不是特定版本。 最佳答案 C++0x/C++11可用性到目前为止,我知道检测GCC是否使用C++0x/C++11的唯一方法是检查预定义宏__GXX_EXPERIMENTAL_CXX0X__:#ifdef__GXX_EXPERI