问题标签 [auto-ptr]
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++ - 参考资料和 auto_ptr
如果我有一个 auto_ptr,我可以通过它作为参考吗?比如:
auto_ptrs 的奇数复制行为是什么?
c++ - boost::ptr_vector 和 boost::any 的问题
好的,所以我有疑问,我想知道这是否可能:
我正在使用带有通用数据(字符串、整数、布尔值等)的数据库。每当构造对象或修改对象的成员时,我都必须使用特定操作(SELECT 或 UPDATE)查询数据库。首先,这不是与数据库相关的问题,我真正的问题是我有一个 ptr_vector,它保存 boost::any 指向对象成员的指针。在这样的代码中:
然后我将要修改的成员传递给另一个杂项类的函数,该函数以 boost::any* 为参数:
同一个类接受 any*,并执行以下操作:
Enemy_Values 是一个 ptr_vector。因此,当我访问这个具有 Enemy_Values 作为成员的 misc_class 时,我想更改内部的 auto_ptr 指向的值:
在这里,我得到一个违规错误。我尝试了很多事情,有人告诉我,我不应该使用 auto_ptr 容器或使用 boost::any 来回转换。这是我正在做的可能,还是有更好更直观的方法?
提前致谢。
c++ - 返回一个新对象和另一个值
我想返回两个值,其中一个是一个新对象。我可以这样做std::pair
:
为了使代码异常安全,我想做:
但这不会编译,因为如果auto_ptr
不修改auto_ptr
被复制的内容就无法复制。好的,这意味着auto_ptr
不像其他类型那样组合得很好(以另一种方式)。在这种情况下返回新对象的好方法是什么?
一种选择是返回 a shared_ptr
,另一种是 inout 引用。但我正在寻找其他选择。我可以做类似的事情:
有没有更好的办法?
c++ - 如何在必须复制构造的类中使用 std::auto_ptr?
我有foo
一个包含我想复制构造的 std::auto_ptr 成员的类,但这似乎是不允许的。作业也有类似的情况。请参见以下示例:
我可以声明_c
为,mutable
但我不确定这是正确的。有没有人有更好的解决方案?
编辑
好的,我没有得到我期望的那种答案,所以我会更具体地说明这个问题。
- 类型的对象
foo
在堆栈上创建并按值传递给容器类(不是 stl),然后超出范围。我无法控制容器代码。(它实际上是一个活动队列实现,有错误。) - 该类
bar
是一个相当重量级的解析器。它的性能非常差new
,delete
因此即使它是可复制的,也太昂贵了。 - 我们可以保证,当一个
bar
对象被创建时,它一次只需要在一个地方拥有。在这种情况下,它在线程之间传递并在事务完成时被删除。这就是为什么我希望使用std::autp_ptr
. - 我非常愿意考虑提升智能指针,但如果有替代方案,我希望能保证这种唯一性。
c++ - 为什么这段代码只打印 42?
有人可以向我解释为什么这段代码只打印“42”而不是“created\n42”吗?
顺便说一句,我在解决方案中用不同的值尝试了这段代码,我总是得到“正确”的值,所以它似乎不是一个随机的幸运值。
c++ - std::auto_ptr、delete[] 和泄漏
为什么这段代码不会导致内存泄漏?
WinXP sp2,编译器:BCB.05.03
c++ - 从函数返回多个 auto_ptrs
我有一个在堆上分配两个变量并将它们返回给调用者的函数。像这样的东西:
通常,在类似的情况下,当我有一个带有一个变量的函数时,我会使用“源”技巧auto_ptr
:
我想改写Create1
usingauto_ptr
但不知道该怎么做。据我了解,我不能通过引用返回 auto_ptr,对吗?那么有可能吗?
c++ - 你什么时候会使用 std::auto_ptr 而不是 boost::shared_ptr?
我们几乎已经boost::shared_ptr
在所有代码中都使用了,但是我们仍然有一些孤立的情况使用std::auto_ptr
,包括单例类:
有人告诉我有一个很好的理由为什么没有这样做shared_ptr
,但对于我的生活,我无法理解为什么?我知道这auto_ptr
最终会在下一个标准中被标记为折旧,所以我想知道我可以用什么/如何替换这个实现。
另外,还有什么其他原因可以让您考虑使用 anauto_ptr
而不是 ashared_ptr
吗?您是否看到将来迁移到 shared_ptr 有任何问题?
编辑:
- 因此,在回答“我可以在上面的代码中安全地替换
auto_ptr
为shared_ptr
”时,答案是肯定的 - 但是我会受到一点性能影响。 - 当
auto_ptr
最终被标记为折旧并且我们转移到时std::shared_ptr
,我们需要彻底测试我们的代码以确保我们遵守不同的所有权语义。
c++ - 如何使用 auto_ptr 作为处理另一个成员变量的成员变量
我有这样的课:
但是 B ptr 在不同的 A 对象之间共享。如何使用 auto_ptr 以便在 A 被破坏时 B 保持打开状态,以便指向同一 ptr 的其他 A 对象可以继续运行而不会出现问题。这看起来好吗:
人们实现这一点的不同方式以及他们看到的任何问题/优势是什么......谢谢
c++ - 如何有效地删除存储在多个容器中的 C++ 对象?自动指针?
我有一个应用程序,它在执行期间创建某种类型的对象(例如,“Foo”类),以跟踪一些统计信息,并将它们插入两个 STL 映射中的一个或两个中,例如:
我想知道删除 Foo 对象的最佳方法是什么。目前我的解决方案是遍历 map1 和 map2,并将 Foo 指针放入一个集合中,然后在这个集合上进行交互并在每个集合上调用 delete。
有没有更有效的方法,可能使用 auto_ptr?如果是这样,由于 auto_ptr<> 对象不能存储在 STL 容器中,如何?
提前致谢。