调用 std::set::find 时避免 const_cast

2023-11-23

有什么好的方法可以避免const_cast下面,同时保持 const 正确性?

Without const_cast下面的代码无法编译。set::find获取对集合键类型的 const 引用,因此在我们的例子中,它保证不会更改传入的指针值;然而,它不能保证不改变指针指向的内容。

class C {
public:
   std::set<int*> m_set;

   bool isPtrInSet(const int* ptr) const
   {
       return m_set.find(const_cast<int*>(ptr)) != m_set.end();
   }
};

Yes.

在 C++14 中,您可以使用自己的比较器来声明int const* as 透明的。这将使模板过载 of find()可以将键与任意类型进行比较。看这个相关那么问题。这是乔纳森·韦克利的解释.

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

调用 std::set::find 时避免 const_cast 的相关文章

  • 检查两个数是否是彼此的排列?

    给定两个数字 a b 使得 1 例如 123 是 312 的有效排列 我也不想对数字中的数字进行排序 如果您指的是数字的字符 例如 1927 和 9721 则 至少 有几种方法 如果允许排序 一种方法是简单地sprintf将它们放入两个缓冲
  • 如何使 Windows 窗体的关闭按钮不关闭窗体但使其不可见?

    该表单有一个 NotifyIcon 对象 当用户单击 关闭 按钮时 我希望表单不关闭而是变得不可见 然后 如果用户想再次查看该表单 可以双击系统托盘中的图标 如果用户想关闭表单 可以右键单击该图标并选择 关闭 有人可以告诉我如何使关闭按钮不
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • Newtonsoft JSON PreserveReferences处理自定义等于用法

    我目前在使用 Newtonsoft Json 时遇到一些问题 我想要的很简单 将要序列化的对象与所有属性和子属性进行比较以确保相等 我现在尝试创建自己的 EqualityComparer 但它仅与父对象的属性进行比较 另外 我尝试编写自己的
  • 当 contains() 工作正常时,xpath 函数ends-with() 工作时出现问题

    我正在尝试获取具有以特定 id 结尾的属性的标签 like span 我想获取 id 以 国家 地区 结尾的跨度我尝试以下xpath span ends with id Country 但我得到以下异常 需要命名空间管理器或 XsltCon
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • C - 找到极限之间的所有友好数字

    首先是定义 一对友好的数字由两个不同的整数组成 其中 第一个整数的除数之和等于第二个整数 并且 第二个整数的除数之和等于第一个整数 完美数是等于其自身约数之和的数 我想做的是制作一个程序 询问用户一个下限和一个上限 然后向他 她提供这两个限
  • 获取没有非标准端口的原始 url (C#)

    第一个问题 环境 MVC C AppHarbor Problem 我正在调用 openid 提供商 并根据域生成绝对回调 url 在我的本地机器上 如果我点击的话 效果很好http localhost 12345 login Request
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • 从库中捕获主线程 SynchronizationContext 或 Dispatcher

    我有一个 C 库 希望能够将工作发送 发布到 主 ui 线程 如果存在 该库可供以下人员使用 一个winforms应用程序 本机应用程序 带 UI 控制台应用程序 没有 UI 在库中 我想在初始化期间捕获一些东西 Synchronizati
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 控制到达非 void 函数末尾 -wreturn-type

    这是查找四个数字中的最大值的代码 include
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob

随机推荐

  • Visual C++ 易失性

    Visual C 中 易失性 的 MSDN 文档表明 除了确保读取始终从内存中读取以及写入始终相应地写入之外 写入具有 释放语义 读取具有 获取语义 易失性 的 C 规范包括第二部分 不要进行疯狂的优化 但不包括第一部分 内存栅栏 Visu
  • 装饰器对代码的特定行而不是整个方法进行计时?

    让我们假设一个简单的方法 def test method a 1 b 10000 c 20000 sum1 sum range a b sum2 sum range b c return sum1 sum2 要使用装饰器计时此方法 一个简单
  • __LINE__ __FILE__ 或 qml 中的类似函数

    我正在尝试打印调用者函数 行号和文件名 而不会在 QML 中出于正常调试目的抛出错误 我可以打印调用者函数名称 如下所示 console log Caller Function Name arguments callee caller na
  • 以编程方式滚动 EditText

    我正在编写一个简单的凯撒加密活动 屏幕上有两个 EditText 一个是明文 一个是加密的 下面是加密 EditText 的一个示例 明文文本与之类似
  • 增加录制音频的音量输出

    我正在尝试在 Android 中制作一个通话录音应用程序 我正在使用扬声器录制上行链路和下行链路音频 我面临的唯一问题是音量太低 我已使用 AudioManager 将设备的音量增加到最大值 但不能超过该值 我首先使用MediaRecord
  • 修改使用 from ... import * 导入的模块中的变量

    考虑以下代码 main py From toolsmodule import database foo toolsmodule database mydatabase 看起来 这在每个模块中创建了一个具有不同内容的变量 如何从 main 修
  • 仅 Android 3.x WebView 文本选择 + JavaScript

    问题域 基于 Android WebView 的 ePub 格式阅读器 我们需要可通过 JavaScript 方法访问的文本突出显示 即打开 关闭 保存并通过电子邮件发送等 如果我的理解有误 请知情者指正 在 WebView 上选择文本时
  • Ruby Symbol#to_proc 在 1.9.2-p180 中泄漏引用?

    好的 这是我第二次尝试使用 Sinatra 应用程序调试内存问题 我相信这次我已经将其固定为简单的示例代码 看来当我过滤数组时 map some method 它会导致该数组中的项目无法被垃圾收集 运行等效的 map x x some me
  • 在 CLion 中设置 ROS 包

    我正在使用 CLion C IDE 来编辑 ROS 包 我可以通过打开CMakeLists txt文件 但是 我收到一个错误 FATAL ERROR find package catkin 失败 在工作区和 CMAKE PREFIX PAT
  • 需要帮助理解合并冲突示例

    我正在遵循一本书中的示例 该示例没有显示解决合并冲突的步骤 正如这篇文章中提到的 该教程对我不起作用 在本地系统上模拟多个用户 提交者所以 我什至无法学习合并 以下是从书中复制的步骤 现在打开空白participants txt文件并将以下
  • 在 Haskell 中简单输入 lambda 演算失败

    我是 Haskell 的新手 所以如果这个问题没有太大意义 我深表歉意 我希望能够在 Haskell 中实现简单类型的 lambda 表达式 这样当我尝试将一个表达式应用于另一个表达式时wrongtype 结果不是类型错误 而是一些设置值
  • 使用 dplyr 对多个变量的所有可能组合进行分组

    考虑到如下情况 library dplyr myData lt tbl df data frame var1 rnorm 100 var2 letters 1 3 gt sample 100 replace TRUE gt factor v
  • 运行 Heckle 时出错? “current_code”:Ruby2Ruby 的未定义方法“translate”

    我正在尝试运行 Heckle 但不断收到错误消息 gt spec spec controllers my controller spec rb heckle MyController exception has a thick skin T
  • 为什么 IE7 和 IE8 在调用 jQuery 时给出“访问被拒绝”?

    我正在使用 Google CDN 将 jQuery 1 4 2 Min 文件调用到我的应用程序中 FF Chrome Safari 一切都运行良好 但由于某种原因 我在第 127 行的 jquery min js 文件中收到 访问被拒绝 错
  • 返回无效引用

    有时 当我用 C 编程时 我希望有一个undefined每个变量的值 例如 Javascript 例如 当我返回数组的越界元素的值时 返回undefined而不是抛出异常 或者 template
  • Angular2 路由守卫返回 Observable,如何处理错误

    我有一个如下所示的路线守卫 Injectable export class AuthGuard implements CanActivate constructor private router Router private authent
  • 执行描述 shell 命令的字符串数组

    我正在努力执行一组作为字符串存储在数组中的命令行 我的代码如下所示 arr sudo apt get update sudo apt get install xxx arr arr ln s path1 path2 etc Then I l
  • 是否为每个请求创建新的套接字?

    我正在尝试了解网络套接字 到目前为止 我的理解是服务器创建一个绑定到特定端口的新套接字 然后它监听这个套接字来处理客户端请求 我已阅读本教程http docs oracle com javase tutorial networking so
  • 使用 grid_2d_graph 在 networkx 中绘制 MxM 节点的方形网格时消除旋转效果

    我需要生成一个正则图 也称为格子网络 其中有100x100节点 我开始画一个10x10带有以下代码的图表 import numpy from numpy import import networkx as nx from networkx
  • 调用 std::set::find 时避免 const_cast

    有什么好的方法可以避免const cast下面 同时保持 const 正确性 Without const cast下面的代码无法编译 set find获取对集合键类型的 const 引用 因此在我们的例子中 它保证不会更改传入的指针值 然而