问题标签 [ptr-vector]
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::ptr_vector 获取指针而不是引用
我最近发现 boost ptr_vector 对于管理我的堆分配对象集合很有用。指针集合库非常好,但不幸的是,我被一件事拖住了。
我的代码的另一部分需要在 ptr_vector 中显式保存指向我的一个对象的指针(出于特定原因,它不能作为引用)。但是,当您访问 ptr_vector 中的对象时,您会得到一个引用 T&(即使您使用了 ptr_vector.push_back(T *)
无论如何我可以从 boost::ptr_vector 中得到一个普通的指针吗?
c++ - 无法制作包含 ptr_vector 的类的向量
我需要一个std::vector
of boost::ptr_vector
s。为了使它们的管理更容易,我将 boost::ptr_vector 包含在一个类 ( Zoo
) 中,并为其创建了一个 std::vector ( allZoos
)。看一个最小的代码来重现这个:
声明allZoos
是可以的,但是调用它的任何成员函数都会导致编译器错误:(完整的错误日志太长了,没有贴出来)
这与 boost 的不可复制实用程序类和自定义new_clone
函数无关,我尝试了它们但没有运气。那怎么解决?
(我使用的是VS2010)
c++ - boost::ptr_vector 问题
我想要一个boost::ptr_vector
指向对象的多态指针(这部分大部分都在工作),但是我在使用它的某些功能时遇到了麻烦。
我想加载ptr_vector
使用 case 开关来确定要指向的子类型,这样我就不必让多个指针浮动,但是当我覆盖类型时,指针多态地指向它会覆盖其中的所有ptr_vector
内容使用相同的指针推送(我认为这与它存储确切的指针有关)我认为可以通过给它对象的副本/克隆而不是指针来解决,但我看不到在哪里,或者如何告诉它如何做到这一点。
我遇到的另一个问题是,当指针存在的范围结束时ptr_vector
停止存在的所有对象(我觉得这可以通过解决问题来解决是第 2 段)
我的另一个问题是如何在示例中删除特定对象,ptr_vector
例如我发现当其中有 30 多个对象时我需要删除对象 5 ptr_vector
(请记住,我将搜索要删除的对象)
编辑:我已经实现了这些clone
方法,并且它们工作正常
编辑:示例代码
gameObject(多态类型)
对象管理器(举例说明范围)
主要的
c++ - boost ptr_vector 处理删除“通过引用”
我的班级有一个指针向量:
并且在一些“设置”方法中向向量添加了一些类:
现在这个类的客户可能希望将他们的 Class 对象添加到这个类列表中:
他们可能希望通过传递相同的指针来删除它们:
现在,如果我理解正确,在阅读了这个答案(https://stackoverflow.com/a/357043/48998)之后,我需要按如下方式实现该方法:
我知道我还必须在从 ptr_vector.release() 返回的 auto_ptr 上再次调用 release()。
我是否正确假设这将确保此方法的调用者(RemoveThing ...)将保留对其 Class 对象的有效引用并且不会被删除?我只是想让 vec 获得临时所有权,然后放弃它。
c++ - 使用ptr_vector时派生类的访问方法
设置
目标
拥有一个包含两个派生类的对象的向量,然后能够访问特定于子类的方法。
当前的“解决方案”
问题
显然“它”既不被识别为 DerivedA 也不被识别为 DerivedB,因此无法访问子特定方法。需要某种形式的演员表,所以我想问题是:
如何正确地将迭代器转换为正确的派生类?
也许有更好的方法来构建整个场景?
编辑: 似乎我有点不清楚。派生类中方法的目的是根本不同的。考虑具有派生类 Armor 和 Weapon 的基类 Item。
在这个例子中,你可以看到为什么,例如,Weapon 有一个函数 getDamage(),它可能会返回一个浮点数。
Armor不需要此功能,甚至没有类似的功能。
在此示例中,您可以将向量视为可以包含任意数量和类型的项目的库存。甚至可能有堆叠和一些用途的物品(可能是药水)
c++ - ptr_vector 未正确释放
我正在尝试使用 ptr_vector 来存储一些指针,但是一旦我的 main 方法出现错误。这是我的代码:
这是我收到的错误消息:
我究竟做错了什么?谢谢!
c++ - boost ptr_vector 迭代器
我正在遍历树节点的子节点。孩子们存储在 ptr_vector 中,在整个迭代过程中的某个时刻,我陷入了无限递归,但我不知道为什么。
这是发生无限递归的方法(该方法仅用于将树结构打印到 中cout
):
这是我正在导航的树结构(请注意,嵌套的目的edge
是表示父节点和子节点之间的距离):
此外,我注意到这种无限递归仅在调用以下方法后发生:
为什么这种方法会导致无限递归?谢谢!
c++ - 我可以使用 ptr_vector 作为堆吗?
我想用 ptr_vector 替换用作堆(sort_heap)的 std:vector。http://sourceforge.net/projects/ptr-vector/
上 ptr_vector 的作者提到使用 std 命名空间排序算法不是一个好主意,因为这会导致对象而不是指针的移动。他指的是 stdx:sort... 显然内置在 sourceforge 版本中的算法(可追溯到 2006 年)。
我在 ptr_vector 的 boost 实现中找不到后者。因此,如果我依赖于 boost ptr_vector (如何),我可以在不牺牲性能的情况下使用带有 sort_heap 的容器吗?
c++ - 如何从 boost::ptr_vector 中删除“this”
我有一个 boost::ptr_vector 包含指向“可持有”类的指针。
我从可保存类中向该向量添加新项目,如下所示:
其中 currentplanet 是指向包含 ptr_vector 的类的对象的指针。这一切都很好。
我感到困惑的是如何从它自己的类中的函数中删除 ptr_vector 中的条目。我正在努力:
与此处类似问题的答案一致:How to erase elements from boost::ptr_vector,但我显然在某个地方出错了,可能与“this”的使用有关。
在尝试编译时,我收到来自 stl_algo.h 的错误说
我确定这很明显,但我可能对 ptr_vector 的间接性感到困惑......提前感谢您的任何答案!
c++ - 随机分配给 boost::ptr_vector
我想随机分配给 boost::ptr_vector。使用正常的 STL 向量我会这样做:
我正在尝试对 boost::ptr_vector 做同样的事情:
但我收到以下错误:
但我很难理解这一点