问题标签 [boost]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 将 boost::function 降级为普通函数指针
想要将 boost::bind 传递给一个需要普通函数指针(相同签名)的方法。
我可以避免存储 boost::function 并直接传递绑定函子,但随后我得到类似的错误:
c++ - 反向偏移标记器
我有一个要标记的字符串。它的形式是HHmmssff
, H
, m
,s
是f
数字。
它应该被标记为四个 2 位数字,但我需要它也接受速记形式,就像sff
它解释为00000sff
. 我想使用boost::tokenizer
'soffset_separator
但它似乎只适用于正偏移量,我想让它向后工作。
好的,一个想法是从左边用零填充字符串,但也许社区想出了一些超级智能的东西。;)
编辑: 其他要求刚刚开始发挥作用。
更智能的解决方案的基本需求是处理所有情况,如f
, ssff
,mssff
等,但也接受更完整的时间符号,HH:mm:ss:ff
如其速记形式,例如s:ff
,甚至s:
(这应该被解释为s:00
)。
在字符串以结尾的情况下,:
我显然也可以用两个零填充它,然后去掉所有分隔符,只留下数字并用精神解析结果字符串。
int
但是,如果有一种方法可以使偏移标记器从字符串的末尾返回(偏移量 -2、-4、-6、-8)并将数字转换为s ,这似乎会更简单一些。
c++ - 为 MSVC 预构建的 Boost 1.37
我找不到用于 Boost 1.37.0 的一组预构建的 MSVC++ 库,只有源代码。我不明白他们奇怪的构建系统是如何工作的……有没有什么地方可以找到 Visual Studio 项目的下载或其他东西?
c++ - 如何在 boost asio 中设置阻塞套接字的超时时间?
有没有办法取消挂起的操作(不断开连接)或为 boost 库函数设置超时?
即我想在 boost asio 中设置阻塞套接字的超时时间?
socket.read_some(boost::asio::buffer(pData, maxSize), error_);
示例:我想从套接字读取一些内容,但是如果 10 秒过去了,我想抛出一个错误。
c++ - 你可以在 boost asio 中设置 SO_RCVTIMEO 和 SO_SNDTIMEO 套接字选项吗?
你可以在 boost asio 中设置 SO_RCVTIMEO 和 SO_SNDTIMEO 套接字选项吗?
如果有怎么办?
注意我知道你可以使用计时器,但我特别想知道这些套接字选项。
c++ - 删除是否适用于指向基类的指针?
您是否必须传递 delete 与 new 返回的相同的指针,或者您可以传递一个指向类基类型之一的指针?例如:
当然,这大大简化了。我真正想做的是创建一个充满 boost::shared_ptr 的容器,并将其传递给一些代码,该代码将在完成后将其从容器中删除。这段代码对 Bar 或 Base 的实现一无所知,并且将依赖 shared_ptr 析构函数中隐含的删除运算符来做正确的事情。
这可能行得通吗?我的直觉说不,因为指针不会有相同的地址。另一方面, dynamic_cast<Bar*> 应该可以工作,因此编译器在某个地方存储了足够的信息来解决这个问题。
感谢您的帮助,所有回答和评论的人。我已经知道虚拟析构函数的重要性,如我的示例所示;看到答案后,我想了一下,意识到虚拟析构函数的全部原因就是这种情况。因此它必须工作。我被缺少将指针转换回原始指针的可见方法而感到震惊。更多的思考让我相信有一种看不见的方法,我推测析构函数正在返回真正的删除指针以释放。当我在 ~Base 中看到这一行时,调查来自 Microsoft VC++ 的编译代码证实了我的怀疑:
跟踪汇编器发现这是传递给删除函数的指针。谜团已揭开。
我已经修复了将虚拟析构函数添加到 IFoo 的示例,这是一个简单的疏忽。再次感谢所有指出这一点的人。
c# - 将 boost::signal 包装到 C# 委托
假设我有一个异步库,用本机 C++ 编写,接口类似于:
我想用 C# 包装。有谁知道一种方法,使用 SWIG 或类似的东西,可以让我将信号绑定到 C# 委托?
c++ - 如何调试使用 boost 而不会失去理智的代码?
Boost 是一组很棒的库,它确实提高了生产力。但是调试使用它的代码完全是一场噩梦。当然,遍历两万个头文件可能是一项有价值的智力练习,但如果你需要一遍又一遍地做呢?
是否有一种开发人员友好的方式可以跳过提升部分并让调试器直接访问我的代码?
Visual Studio 有一个适用于 .NET 框架的DebuggerStepThroughAttribute。本机 C++ 有类似的东西吗?
c++ - 如何在 Windows 上构建 x64 Boost 库?
我已经多次构建了 x86 Boost 库,但我似乎无法构建 x64 库。我启动“Visual Studio 2005 x64 Cross Tools 命令提示符”并运行我通常的构建:
但它仍然会生成 x86 .lib 文件(我用 dumpbin /headers 验证了这一点)。我究竟做错了什么?
c++ - 存储二维点以快速检索矩形内的点
我有大量的 2D 点,我想快速获取位于某个矩形中的点。让我们说一个'。是任意点,“X”是我想在一个矩形内找到的点,该矩形将“T”作为 TopLeft,“B”作为 BottomRight 点:
我尝试了一个带有排序函子的 std::set ,它在集合的开头对 TopLeft 点进行排序,在集合的末尾对 BottomRight 进行排序。当先按 X 值排序时,这将导致找到以下点。
这意味着我必须检查每个找到的点,它是否真的在矩形内。不是很好。
有什么更好的方法来做到这一点?
我的语言是 C++ (Windows),我有 STL 和 boost 可用。
更新
到目前为止阅读了答案,我注意到我没有考虑到我的问题的所有参数:没有一个固定的矩形。矩形可以由用户在运行时设置。这意味着对点集进行排序有望比在此更新之前 Artelius 建议的通过所有点进行线性搜索更有效。不过,我还是会试一试!我不希望用户非常频繁地设置矩形。因此,关于实施工作,它可能对我来说是一个很好的解决方案。