问题标签 [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.

0 投票
6 回答
12047 浏览

c++ - 如何从 boost::ptr_vector 中删除元素

所以我试图通过使用 boost::ptr_vector 来摆脱我的 std::vector 。现在我正在尝试从一个元素中删除一个元素,并将删除的元素也删除。对我来说最明显的事情是:

但这甚至不会编译(完整的错误信息见下文)。我已经像在 std::vector 上一样尝试了擦除/删除习语,但 boost::ptr_vector 的所有算法都与 std::vector 中的算法略有不同。

所以我的问题:

  • 如何从 ptr_vector 中删除指针?
  • 我还需要手动删除()我删除的那个元素吗?

编译器错误:

0 投票
2 回答
1063 浏览

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 来回转换。这是我正在做的可能,还是有更好更直观的方法?

提前致谢。

0 投票
1 回答
901 浏览

c++ - 发布 boost::ptr_vector,与文档不匹配

我正在使用 boost 1.37,我正在尝试使用 boost::ptr_vector,并转移它的所有权,以便我可以从函数中返回它。查看提升文档(http://www.boost.org/doc/libs/1_36_0/libs/ptr_container/doc/tutorial.html#new-functions

我试过了:

}

编译器错误:

这是 boost 文档中的一个小故障吗?我可以得到一个 auto_ptr 和取消引用来取回 ptr_vector 吗?

0 投票
1 回答
763 浏览

c++ - 将 boost::ptr_vector 添加到双端队列,typeid 不匹配

我正在尝试使用 push_back() 将 boost::ptr_vector 添加到 std::deque。当我这样做时,我得到一个类型 ID 不匹配的 BOOST::ASSERT。

在“boost_ptr_container_clone_allocator”中

来自 TotalView,res并且r

它们在我看来是一样的。

我试图添加的 ptr_vector 有 的实例diagnostic_database_loader::JointDiagnosticDBClass,它是从diagnostic_database_loader::DiagnosticDBClass上面派生的。

我打印出 ptr_vector 中元素的 typeid

我试图用一个简单的测试程序重现这一点,但我没有遇到同样的问题。

测试程序运行良好。

有谁知道如何
* 在测试代码中重现问题?
* 修复真实程序中的问题?

如果有人想要完整的代码:
https ://code.ros.org/svn/wg-ros-pkg/trunk/sandbox/diagnostic_database_loader

0 投票
2 回答
940 浏览

c++ - 将对象从一个 Boost ptr_container 移动到另一个

我想将某些元素从 a 移动到 b:

上面的代码没有编译,因为release函数返回boost::ptr_container_detail::static_move_ptr<...>,不适合推回。

我应该如何进行?

编辑:我发现返回的对象具有.get() .release(),它提供了一个原始指针(这也可能导致一些异常安全问题)。但是,我宁愿不依赖未记录的内部功能,因此请随时分享任何更好的解决方案......

0 投票
2 回答
1146 浏览

boost - 在另一个 boost::ptr_vector 中推回 boost::ptr_vector<...>::iterator?

我有以下代码(只是在这里输入,可能有拼写错误或其他东西):

我现在的问题是我不能以任何方式 push_back 迭代器,我只是没有将指针从迭代器中取出。

有没有我没有看到的简单方法,或者 boosts ptr_vector 是这种情况下的错误选择?

提前致谢。

0 投票
1 回答
548 浏览

boost - 迭代 boost ptr_vector

我有一个我自己的对象的 ptr_vector 列表。像这样的东西:

0 投票
1 回答
487 浏览

c++ - 有没有办法 Boost.Assign 一个 ptr_vector?

通常是这样的:

除了一个:

如果您需要知道原因;我正在使用ptr_vector而不是vector只使用它,所以我不必删除元素,但我需要使用 Boost.Assign 来初始化它,因为我希望它ptr_vectorconst(不能使用push_back()pop_back()代码中的任何其他地方。)

提前感谢您的回答,我可能使用了错误的容器类型?

0 投票
3 回答
1288 浏览

c++ - boost::ptr_vector 和 find_if

我有一堂课:

当我编译这个时,我得到错误:

错误 1 ​​错误 C2440:“正在初始化”:
无法从“const CMDatabase::Try”转换为“CMDatabase::Try
*”c:\program files\microsoft visual studio 9.0\vc\include\functional 296

谁能告诉我我做错了什么以及如何纠正它。

0 投票
2 回答
751 浏览

c++ - ptr_vector - _CrtDumpMemoryLeaks() - 即使调用了析构函数,内存泄漏

我正在开发一个游戏引擎,在一个较早的问题中,有人建议我开始使用 boost::ptr_vector 来维护一个指针列表。

基本思想是有几个State,每个State都有一个SceneGraph。每个状态都有它们初始化的几个资源,然后填充自己的场景图。SceneGraph 有一个 boost::ptr_vector,它将资源指针塞入其中。

以下是相关代码:

在 TestState 中创建和添加到 SceneGraph 的资源

p>

场景图

p>

使用相关行编辑 main.cpp

p>

我正在使用 _CrtDumpMemoryLeaks() 来输出内存泄漏日志报告。日志报告告诉我有内存泄漏;

_CrtDumpMemoryLeaks() 是在 boost::ptr_vector 上遇到问题还是我做错了什么?调试器告诉我 State 确实调用了它的析构函数(它有;delete sceneGraph),我还验证了 SceneGraph 的析构函数也被调用了。

非常感谢任何帮助,我很想看到一个空的内存泄漏报告:-)