从 STL std::queue 中删除而不破坏删除的对象?

2024-01-10

我在 STL 容器(队列和列表)上找到的所有文档都说,对于任何删除函数,都会调用删除对象的析构函数。这意味着我无法在任何时候使用 std::queue 来使用一个队列,该队列只是需要对其执行某些操作的对象列表。

我希望能够在对象排队等待我对它们做某事时将它们添加到队列中。然后,当我完成它们后,我想将它们从中删除,而不破坏有问题的对象。从我读过的文档来看,这似乎是不可能的。我是否误读了文档?除了基本“队列”之外,STL 中是否还有另一种类型的队列,在调用 pop_front 时不会调用已删除对象的析构函数?

编辑以澄清:在我的例子中,我使用的是指针列表。像这样的东西:

   dbObject *someObject;
   queue<dbObject *> inputQueue;
   inputQueue.push_back(someObject);

   ...

   dbObject *objectWithInput = inputQueue.front();
   //handle object's input...
   inputQueue.pop_front(); // Remove from queue... destroyed now?

如果您将指向对象的指针放入队列(以及任何其他 STL 容器)中,则当您删除它们时,这些指针不会被删除。

详细说明:当您使用 std::queue 并删除对象时,会调用 some_obj* 的析构函数。但是普通指针(或任何 POD 类型 - int、char 等)的析构函数是空的,无操作。这里的要点是 some_obj* 的析构函数与 some_obj 的析构函数非常不同。

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

从 STL std::queue 中删除而不破坏删除的对象? 的相关文章

  • 如何使用 zlib 制作 .zip 文件

    我正在阅读zlib的文档 它相当详细 但我读到了这一行 输出数据将位于zlib格式 与 gzip 或zip formats http www zlib net zlib how html http www zlib net zlib how
  • ASP.NET Core 与现有的 IoC 容器和环境?

    我想运行ASP NET 核心网络堆栈以及MVC在已托管现有应用程序的 Windows 服务环境中 以便为其提供前端 该应用程序使用 Autofac 来处理 DI 问题 这很好 因为它已经有一个扩展Microsoft Extensions D
  • SSL/TLS/HTTPS 站点在 C#/.NET WebBrowser 控件中非常慢,但在 Internet Explorer 中则很好

    背景 我正在修改自动维基浏览器 http en wikipedia org wiki Wikipedia AutoWikiBrowser使用托管在安全服务器上的 MediaWiki 站点 我允许用户通过 C 应用程序中的 WebBrowse
  • (const T v) 在 C 中从来都不是必需的,对吗?

    例如 void func const int i 在这里 const是不必要的 因为所有参数都是按值传递的 包括指针 真的吗 C 中的所有参数确实都是按值传递 这意味着无论您是否包含该参数 实际参数都不会改变const or not 然而
  • 将字符串中的“奇怪”字符转换为罗马字符

    我需要能够将用户输入仅转换为 a z 罗马字符 不区分大小写 所以 我感兴趣的角色只有26个 然而 用户可以输入他们想要的任何 形式 的字符 西班牙语 n 法语 e 和德语 u 都可以包含用户输入中的重音符号 这些重音符号会被程序删除 我已
  • mprotect 之后 malloc 导致分段错误

    在使用 mprotect 保护内存区域后第一次调用 malloc 时 我遇到分段错误 这是执行内存分配和保护的代码片段 define PAGESIZE 4096 void paalloc int size Allocates and ali
  • SFINAE 如何使用省略号?

    过去 当使用 SFINAE 选择构造函数重载时 我通常使用以下内容 template
  • 获取尚未实例化的类的函数句柄

    我对 C 相当陌生 我想做的事情可能看起来很复杂 首先 我想获取一些函数的句柄以便稍后执行它们 我知道我可以通过以下方式实现这一目标 List
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何
  • 两种类型的回发事件

    1 我发现了两篇文章 每篇文章对两种类型的回发事件的分类都略有不同 一位资源说两种类型的回发事件是Changed事件 其中控件实现 IPostbackDataHandler 当数据在回发之间更改时触发 然后Raised事件 其中控件实现 I
  • 从成员函数指针类型生成函子

    我正在尝试简化 通过make fn 预处理参数的函子的生成 通过wrap 对于 arity 的成员函数n 生成函子基本上可以工作 但到目前为止只能通过显式指定成员函数的参数类型来实现 现在我想从它处理的成员函数类型生成正确的函子 struc
  • 为什么具有相同名称但不同签名的多个继承函数不会被视为重载函数?

    以下代码片段在编译期间产生 对 foo 的调用不明确 错误 我想知道是否有任何方法可以解决此问题而不完全限定对 foo 的调用 include
  • tabcontrol selectedindex 更改事件未被触发 C#

    嘿伙计们 我有一个很小的问题 请参阅下面的代码 this is main load private void Form1 Load object sender EventArgs e tabAddRemoveOperator Selecte
  • asp.net网格分页的SQL查询

    我在用iBatis and SQLServer 使用偏移量和限制进行分页查询的最佳方法是什么 也许我添加该列ROW NUMBER OVER ORDER BY Id AS RowNum 但这只会阻止简单查询的数据访问 在某些情况下 我使用选择
  • 为什么要在 C++ 中使用 typedef?

    可以说我有 set
  • DataTable:通过 LINQ 或 LAMBDA 进行动态 Group By 表达式

    我有一个数据表 我想在其中对未指定数量的字段进行分组 发生这种情况的原因是用户可以选择他想要分组的字段 所以 实际上 我将选择推入列表中 在这个选择上 我必须对我的数据表进行分组 想象一下这段代码 VB 或 C 都一样 public voi
  • 0-1背包算法

    以下 0 1 背包问题是否可解 浮动 正值和 浮动 权重 可以是正数或负数 背包的 浮动 容量 gt 0 我平均有 这是一个相对简单的二进制程序 我建议用蛮力进行修剪 如果任何时候你超过了允许的重量 你不需要尝试其他物品的组合 你可以丢弃整
  • 从 Delphi 调用 C# dll

    我用单一方法编写了 Net 3 5 dll 由Delphi exe调用 不幸的是它不起作用 步骤 1 使用以下代码创建 C 3 5 dll public class MyDllClass public static int MyDllMet
  • C++、三元运算符、std::cout

    如何使用 C 用三元运算符编写以下条件 int condition1 condition2 condition3 int double result int or double std cout lt lt condition1 resul
  • 带有私有设置器的 EFCore Base 实体模型属性 - 迁移奇怪的行为

    实体模型继承的类内的私有设置器似乎会导致 EFCore 迁移出现奇怪的问题 考虑以下示例 其中有多个类 Bar and Baz 继承自Foo 跑步时Add Migration多次命令 添加 删除private修饰符 生成的模式在多个方面都是

随机推荐

  • 程序在其他 Windows 机器上无法正常运行

    我的应用程序遇到问题 我试图获取它运行的系统的所有网络配置 最终目标是找到优先级最高的MAC地址 当我使用 QtCreator 运行代码时 代码运行正常并且可以工作 当我创建包含 dll 文件和 exe 文件的文件夹时 代码也运行正常 但问
  • 无法使用 API Gateway 运行 AWS Lambda 函数

    我创建了一个简单的 python 3 7 lambda 函数 import json import boto3 s3 boto3 client s3 def lambda handler event context bucket nubi
  • 如何按 R 数据表中的特定列分组后选择行的子集[重复]

    这个问题在这里已经有答案了 我想在按 R 数据表中的特定列分组后根据条件选择行的子集 以Mtcars数据为例 dt mtcars lt as data table mtcars dt mtcars N by hp hp N 1 110 3
  • HTML Canvas 上的发光效果,可能使用卷积核/矩阵

    我正在将 PNG 图像绘制到 HTML 画布上 并且实现了一个过滤器系统 以允许在将图像数据传输到画布之前对图像数据执行卷积过滤器 有谁知道如何使用卷积核 矩阵创建发光效果 我不确定术语是什么 但我正在谈论这些 http www html5
  • IEnumerable 的扩展方法?

    我有很多不同的枚举 例如 public enum MyEnum Description Army of One one Description Dynamic Duo two Description Three Amigo s three
  • 使用 .htaccess 重定向移动设备 // 排除 IPAD

    我在 htaccess 中使用此代码来重定向移动设备 目前iPad也是一种移动设备 我该如何更改此设置 以便 ipad 不会重定向到移动版本 谢谢你 RewriteEngine on RewriteBase Check if this is
  • IDLE 和 Python 在 Mac OS X 中具有不同的路径

    我运行的是 Mac OS X 10 5 8 我已经从网站安装了 Python 2 6 它在我的应用程序目录中 我已经编辑了我的 bash profile 以具有 Setting PATH for MacPython 2 6 The orgi
  • 使用Volley进行Android开发时,setRetryPolicy()方法调用应该写在哪里

    这可能是一个简单的问题 但我在实际代码中测试了它 无法判断正确的行为setRetryPolicy 凌空的功能 请任何人告诉我该声明的正确位置 我应该写这个方法调用吗onErrorResponse 函数还是在将请求输入队列之前 这是我的位图图
  • Helper Devise:无法在请求环境中找到“Warden::Proxy”实例

    我尝试将 Devise 用于我的 Rails 应用程序 我可以注册并登录 但是当我转到其他页面 构建 时 出现以下错误 Devise Home 中的 MissingWarden show Devise 找不到Warden Proxy您的请求
  • 如何用 LESS 混合多种背景

    我有一个小问题 是否有任何选项可以将多个背景与 LESS 混合 我在 LESS 中有这样的背景设置 background centered url position horizontal center position vertical t
  • 如何在 ios 和 android 的 flutter 中检测模拟位置

    我在屏幕上使用位置包和谷歌地图 flutter 我想检测用户是否使用假 GPS 是否有一个包可以检测 android 和 ios 中可用的 flutter 中的模拟位置 我尝试过使用 TrustFall 包 但我的应用程序总是意外关闭 是否
  • 无法使用 ImagePicker Flutter 分配文件

    我正在学习 imagepickerhttps pub dev packages image picker https pub dev packages image picker 但我不明白为什么当我一步步使用该方法时会出现错误 这就是问题
  • 如何使 EditText 不可编辑/禁用

    我有一个 EditText 用户不应在其中提供输入 所以我尝试禁用它 edittext setEnabled false edittext setClickable false 但是 当我从其他 EditText 中按软键盘中的 下一步 按
  • Maven 从 url 下载或获取 wsdl 到项目目录

    我们使用 url 位置的 wsdls 开发了一个 Web 服务客户端应用程序 我不希望 Web 服务客户端每次都去验证实际的 wsdls 因此想将 wsdls 下载到本地项目中 有什么方法可以使用类似于复制资源的maven下载wsdls吗
  • 你能解释一下这个 sed 一行吗?

    下面一行逆向打印出文件的内容 sed n 1 G h p test txt sed 逐行读取文件怎么可能呢 你能解释一下它的含义吗 n flag 1 G h and p 在这个命令中 这将完成与以下相同的工作tac 即恢复行的顺序 将sed
  • Linux线程同步

    我是 Linux 和 Linux 线程的新手 我花了一些时间谷歌搜索来尝试了解可用于线程同步的所有函数之间的差异 我还有一些问题 我发现了所有这些不同类型的同步 每种都有许多用于锁定 解锁 测试锁定等的功能 gcc原子操作 futexes
  • 如何在角度应用程序内打开其他网站

    我正在尝试加载另一个网站 其中我将有一个网站列表 如果我单击网站链接 它必须在我的角度应用程序中打开该网站 角度或任何地方是否有任何可用选项可以用来加载限制加载网站的网站 我尝试过使用 HTML 标签元素 iframe embed obje
  • DRF Viewset 删除详细路线的权限

    我有一个基本的视图集 class UsersViewSet viewsets ModelViewSet permission classes OnlyStaff queryset User objects all serializer cl
  • 如何根据 Rails 中输入的用户日期继续每周向用户发送电子邮件[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions Rails 上的新功能 目前使用 W
  • 从 STL std::queue 中删除而不破坏删除的对象?

    我在 STL 容器 队列和列表 上找到的所有文档都说 对于任何删除函数 都会调用删除对象的析构函数 这意味着我无法在任何时候使用 std queue 来使用一个队列 该队列只是需要对其执行某些操作的对象列表 我希望能够在对象排队等待我对它们