如何创建 const boost::iterator_range

2023-11-30

评论于为什么 boost::find_first 对它的输入采用非常量引用?建议“调用者使用 const_iterator 模板参数创建一个非常量 iterator_range,以“证明”迭代对象具有足够的生命周期。”

这是什么意思以及我该怎么做?

特别是,如何使用此代码实现常量正确性?

typedef std::map<int, double> tMyMap;
tMyMap::const_iterator subrange_begin = my_map.lower_bound(123);
tMyMap::const_iterator subrange_end = my_map.upper_bound(456);

// I'd like to return a subrange that can't modify my_map
// but this vomits template errors complaining about const_iterators
return boost::iterator_range<tMyMap::const_iterator>(subrange_begin, subrange_end);  

有非常量引用到范围避免绑定到临时变量 1

我会通过让编译器完成您的工作来避免您的难题²:

tMyMap const& my_map; // NOTE const
// ...

return boost::make_iterator_range(my_map.lower_bound(123), mymap.upper_bound(456));

1 标准 C++ 延长了绑定到 const 引用变量的临时变量的生命周期,但这不适用于绑定到对象成员的引用。因此,通过引用聚合范围很容易出现此错误。

/OT:IMO 甚至with预防措施/检查 某些 Boost Range 功能(如适配器)通常使用起来太不安全;我陷入这些陷阱的次数比我愿意承认的还要多。

² 除了以下事实:我们无法复制它从你给出的样本来看

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建 const boost::iterator_range 的相关文章

  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 使用 LINQ 查找列表中特定类型的第一个元素

    使用 LINQ 和 C 在元素列表中查找特定类型的第一个项目的最短表示法是什么 var first yourCollection OfType
  • 在 django 查询集上使用 iterator()

    我最近遇到了一些奇怪的行为 需要检查我的理解 我在模型中使用一个简单的过滤器 然后迭代结果 e g allbooks Book objects filter author A A Milne for book in allbooks do
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反

随机推荐

  • Android 连接至已配对的蓝牙耳机

    我想模拟通过 设置 gt 无线 gt 蓝牙 的操作 并以编程方式连接配对的蓝牙耳机 我在 Stackoverflow 和 Google 上进行了一些搜索 两者都表明在 API 级别 11 之前没有可用的解决方案 但是 我有兴趣通过查看 An
  • 使用 python 和 pandas 按季节对数据进行分组

    我想使用 Pandas 和 Python 迭代我的 csv 文件 并按季节对数据进行分组 计算一年中每个季节的平均值 目前 季度脚本为一月至三月 四月至六月等 我希望季节与月份相关联 11 冬季 12 冬季 1 冬季 2 春季 3 春天 4
  • 解析复杂的肥皂响应

    我正在 android 中构建我的第一个应用程序 该应用程序使用 wcf 服务 我正在使用 ksoap2 来解析响应 响应实际上是 C 中定义的对象数组 我这样做了 这非常有帮助guide现在我的问题是我需要使用一个 wcf 服务 它再次返
  • 如何在 OPENGL 中旋转或平移单个对象实例?

    假设我有一个有四个立方体的场景 我该如何说在 OpenGL 中仅旋转 平移其中两个立方体而不使用 glrotatef 和 f gltranslate 更改其他立方体 我不想定义我自己的齐次坐标 像往常一样绘制前两个立方体 推入视图模型矩阵
  • iPhone 上的点击延迟和抑制输入焦点

    iPhone 上的 webkit 浏览器在用户进行触摸和 javascript 获取单击事件之间有 300 毫秒的延迟 发生这种情况是因为浏览器需要检查用户是否进行了双击 我的应用程序不允许缩放 因此双击对我来说毫无用处 有不少人有提出的解
  • 如何安全地调用 vsnprintf() ?

    我正在将一些非常古老 gt 10 年 的 C 代码移植到现代 Linux 我在自定义编写的 vsnprintf 包装器中遇到分段错误 显然它的任务是检测重复的输出字符串并实习它们 char strVPrintf const String f
  • Oracle中的查询通过子查询进行选择

    我的 Oracle 数据库中有下表 CREATE TABLE test flight NUMBER 4 date DATE action VARCHAR2 50 CONSTRAINT pk PRIMARY KEY flight date 以
  • 为什么 Glimpse 仍在运行?

    我瞥见了 defaultRuntimePolicy Off 但它仍然显示这样的错误 Unable to define EFProfiledDbProviderServices class of type GlimpseDbProviderS
  • 使用 TensorFlow Benchmark 对 Keras 模型进行基准测试

    我正在尝试使用 TensorFlow 后端对 Keras 模型构建的推理阶段的性能进行基准测试 我当时想的是张量流基准测试工具是正确的方法 我已经成功地在桌面上构建并运行了示例tensorflow inception graph pb一切似
  • 为什么我的 WM_UNICHAR 处理程序从未被调用?

    我有一个 ATL 控件 我希望它能够识别 Unicode 我为 WM UNICHAR 添加了一个消息处理程序 MESSAGE HANDLER WM UNICHAR OnUniChar 但是 由于某种原因 OnUniChar 处理程序永远不会
  • 如何使用 java.util.stream 处理文件块

    为了熟悉流 api 我尝试编写一个非常简单的模式 Problem 拥有一个包含非嵌套文本块的文本文件 所有块均由开始 结束模式标识 例如
  • 我可以同时安装 Powershell 4 和 Powershell 3 吗?

    我的盒子上安装了 Powershell 3 我需要使用 Powershell 4 测试一些脚本 但我想继续运行在 Powershell 3 下测试的一些脚本 并且我不想通过安装 Powershell 4 来破坏某些内容 QUESTION 尽
  • Spark Streaming + json4s-jackson 依赖问题

    我无法在我的 Spark 1 4 1 流应用程序中使用 json4s Jackson 3 2 11 认为是 Spark Core 项目中现有的依赖关系导致了问题 如此处所述 gt 是否可以将 json4s 3 2 11 与 Spark 1
  • Python:如何OCR水平线交叉的字符

    我有一批想要扫描的图像 其中一些有一条水平线穿过必须扫描的字符 如下所示 我编写了一个能够删除水平线的程序 import cv2 import numpy as np img cv2 imread image jpg 0 Applies t
  • 如何约束迭代器的元素类型?

    我正在将一些较旧的 Rust 代码转换为在 1 0 0 上运行 我需要转换一个采用字符迭代器的函数 该函数过去是这样写的 fn f
  • 如何根据Python中数据集的最佳拟合确定微分方程的未知参数?

    我正在尝试使用 python 将不同的微分方程拟合到给定的数据集 因此 我分别使用 scipy 包和solve ivp 函数 只要我对微分方程中包含的参数 b 0 005 有一个粗略的估计 这对我来说就很好 例如 import matplo
  • Android自定义形状

    I know it is possible to make a shape looking something like this 但我不知道如何开始 我可以把它做成一个形状吗 或者我必须做别的事情吗 BR 哦 看看那个 我错了 渐变不是问
  • 多次按键无法解决左侧和空间问题?

    I have a strange problem when I press up left arrows and space simultaneously Why doesn t the space work I tried to test
  • 使用 pvfactors 库时出现“OSError: [WinError 126] 找不到指定的模块”

    我开始按照网站教程使用 Python 中的 pvfactors 工具 它计算光伏阵列表面上的辐照度入射 1 import numpy as np import matplotlib pyplot as plt from datetime i
  • 如何创建 const boost::iterator_range

    评论于为什么 boost find first 对它的输入采用非常量引用 建议 调用者使用 const iterator 模板参数创建一个非常量 iterator range 以 证明 迭代对象具有足够的生命周期 这是什么意思以及我该怎么做