草庐IT

boost-pool

全部标签

c++ - boost 序列化输入流错误

我正在研究一个简单的序列化类。我一直在输入流上抛出异常。我将以下示例放在一起,以简单的方式说明我试图完成的任务。我有一个boost序列化的简单示例,但我遇到了异常:#include#include#include#include#defineNVP(X)Xclassbase{public:friendclassboost::serialization::access;base(){v1=10;}intv1;templatevoidserialize(Archive&ar,constunsignedintfile_version){ar&NVP(v1);}virtualvoidbla()

c++ - 在 Boost Spirit 中解析嵌套键值对

我在编写我认为应该使用Boost::Spirit的简单解析器时遇到了问题。(我正在使用Spirit而不是仅仅使用字符串函数,因为这在一定程度上是我的学习练习)。数据要解析的数据采用键值对的形式,其中值本身可以是键值对。键是字母数字(带下划线且没有数字作为第一个字符);值是字母数字加上.-_-值可以是格式为DD-MMM-YYYY的日期,例如01-Jan-2015和float,如3.1415除了普通的旧字母数字字符串。键和值用=分隔;对用;;分隔结构化值用{...}分隔。目前,在将用户输入传递给Spirit之前,我正在清除用户输入中的所有空格。示例输入:Key1=Value1;Key2={

c++ - 为什么 C++11/Boost `unordered_map` 在删除时不重新散列?

我想知道为什么C++11和Boost的hashmap在通过迭代删除元素时不调整大小。即使这在技术上不是内存泄漏,我认为它可能是应用程序中的一个严重问题(这对我来说是一个隐藏的问题,很难追溯)并且它实际上可能会影响许多应用程序。这是容器的“设计缺陷”吗?我对它进行了基准测试,似乎影响了几个编译器版本(包括VS、Clang、GCC)重现问题的代码是:std::unordered_mapm;for(inti=0;isecond;it=m.erase(it);}我创建了一个self-containedtest使用自定义分配器跟踪内存使用情况的文件。据我所知,其背后的原因是允许通过迭代删除元素并

c++ - 如何将 Boost 数量数组类型化为基础类型?

我正在构建一个动态动画和渲染系统,我想使用Boost.Units用于表示物理量以获得良好的尺寸安全性。但是,我将不得不将数量数组传递给对Boost一无所知的函数,例如:OpenGL缓冲区填充命令。这些只需要一个constvoid*并期望找到一个数组float或double取消引用时的值。他们读取数据。来自BLAS和LAPACK不同实现的线性代数函数(例如gemm或gesv)。这些通常采用float*或double*到给定的数组。他们都读取和写入数据。我知道boost::units::quantity有一个constT&value()提供对包含的T的直接引用访问的成员值(value)。我

c++ - 如何调用boost_compute 'BOOST_COMPUTE_FUNCTION'定义的函数?

我目前正在探索boost_compute。不幸的是,文档页面和示例比我需要了解的要少。给定以下缩小代码:BOOST_COMPUTE_FUNCTION(bool,add,(int*values,int*results,intconstant),{//Whatstheindexingvariable?//Inopenclitwouldbeget_global_id(0)intindex=//?results[index]=values[index]+values[index+1]+values[index+2]+constant;});voidcompute(float*results,c

c++ - Boost::Future 延迟延续展开死锁

我正在使用Boost的promise和future并在使用延续时遇到了边缘情况。我的代码使用一个返回future的延续,并在获取其值之前解包then()的结果。#defineBOOST_THREAD_VERSION5#include#includeintmain(intargc,char*argv[]){boost::promisepromise;boost::futurefuture=promise.get_future();promise.set_value(42);intresult=future.then(boost::launch::async,[](boost::futur

c++ - Boost Container vector 可以通过非原始指针管理内存吗?

我有一个类似指针的结构来代替指针。与指针的区别在于它有额外的信息,(也是特殊的)分配器可以使用这些信息来释放内存。这种类似于指针的结构适用于所有基本用途。我可以分配和取消分配内存、取消引用、递增、->等现在我想使用这个指针由类似STL的容器管理。早些时候,我意识到STLvector基本上无法处理非原始指针。T*编码太硬,标准基本上排除了任何不是指针的东西。灵感来自Boost.Interprocess'offset_ptr我决定使用Boost.Containervector,这是非常可定制的,原则上可以管理任何东西,分配器传递给boost::container::vector可以处理任何

c++ - 如何将 boost::asio::tcp::io_stream 附加到我的 io_service?

我习惯使用boost::asio::ip::tcp::socket我在哪里construct他们用io_service.这很有用,因为我有一个用于所有套接字的io_service,并且这些套接字共享一个线程池。现在,我正在尝试使用boost::asio::ip::tcp::io_stream,我希望它在同一个线程池中执行所有异步工作。但是,似乎不可能construct带有外部io_service的tcp::io_stream。底层套接字确实使用了内部初始化的io_service。有没有办法让我继续使用集中管理的io_service和tcp::io_stream?我使用的是boost版本

c++ - 链接 boost.asio

我在链接boost.asio时遇到问题。它使用boost.system并且链接器错误以:/boost_1_39_0/boost/system/error_code.hpp:205:对`boost::system::get_system_category()'的undefinedreference这意味着我需要链接boost.system。我已经构建了boost,现在我有几个lib文件。boost_system-mgw32-d-1_39.dll和库libboost_system-mgw34-d-1_39.liblibboost_system-mgw34-mt-d-1_39.liblibb

c++ - 类似于 boost::multi_index for Python

我非常欣赏C++中的boost::multi_index。碰巧我很乐意在Python中使用类似的东西;用于处理来自数字密集型应用程序的数据的脚本。Python有这样的东西吗?我只是想确定它不存在,然后我会尝试自己实现它。不适合我的事情:用Python包装boost::multi_index。它根本无法扩展。在内存中使用sqlite3。它很丑。 最佳答案 由于python集合仅存储对对象的引用,而不是对象本身,因此具有多个索引方案的一个集合与仅具有多个集合之间没有太大区别。例如,您的数据可以有多个字典,每个字典都使用不同的键来引用它们