问题标签 [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 中检索引用?
我有两个类:一个 Object 类和一个 ObjectManager 类。ObjectManager 类通过 ptr_vector 容器存储“对象”。在某些情况下,我需要检索对这些存储的指针的引用以对它们执行单独的操作。我该怎么做呢?
可编译的伪代码:
基本上我希望 ObjectManager 保留所有权,但我也希望其他类能够获得对该对象的引用,根据正在发生的事情对该对象使用调用方法,然后继续。
c++ - 在 Ptr_Vector 上提升 FOR_EACH?
我目前正在尝试学习一些 Boost 库。我目前正在做我想这将是一个未来的家庭作业项目(学期还没有开始)。但是,这个问题不是关于作业问题,而是关于 Boost。
代码:
BOOST_FOREACH 用于使用与上面完全相同的代码处理法线向量。由于我已经开始使用 ptr_vectors 我得到了错误:
error C2440: '=' : cannot convert from 'Bid' to 'Bid *'
让我相信 ptr_vector 以某种方式掩盖了 foreach 方法的指针。
如果我改为写
我得到四个类型的错误
error C2819: type 'Bid' does not have an overloaded member 'operator ->'
这很糟糕,因为我知道出价是一个指针。
我怎样才能BOOST_FOREACH
正确地迭代ptr_vectors
?
c++ - 存储在 ptr_vector 中的派生类没有被破坏
试图找到使用 ptr_vector 存储、访问和释放对象的最佳方法,尤其是当存储的对象是从其他对象继承时(ptr_vector 应该没有对象切片的任何问题)。但是当运行下面的程序时,令人惊讶的是派生类并没有被破坏。有谁知道为什么?
该程序的输出是:
为什么B0没有被破坏?对象被切片了吗?
c++ - ptr_vector 迭代器不需要增量吗?
请注意,第二个 for 循环不会增加迭代器,但它会迭代并擦除所有元素。我的问题是:
- 我的迭代技术和使用迭代器是否正确?
- 如果 for 循环中不需要迭代器增量,那么增量发生在哪里?
- 使用迭代器更好还是普通整数就足够了(即:使用迭代器是否有任何增值)?(因为我也可以像 pv.erase(pv.begin()+5); 一样擦除第 5 个元素;)
- 有没有办法直接将新对象分配给 ptr_vector 的特定位置(比如说第 5 个位置)?我正在寻找类似 pv[5]=new Derived(5); 的东西。有什么办法吗?
c++ - boost::shared_ptr 语义(复制)
我只是想有一双新的眼睛,下面的代码是正确的:
对象 trifoo 中包含的指针(存储在 ptr_vector 中)是共享指针 f、g、h。
还有,trifoo的构造函数中shared_ptr拷贝的结果是什么;这是“共享”shared_ptr 的正确方法吗,确保引用计数增加等等。我能够测试验证的所有其他疑问,但我不确定如何(正确)检查这一点。也欢迎任何批评。
注意:没有意义的循环是为了测试内存泄漏,没有发生。
c++ - 我应该自己擦除 boost::ptr_vector 的指针吗?
我想知道这段代码是否泄漏:
int main()
{
boost::ptr_vector <char
> v;
v.push_back(new char[10]);
v.clear()
}
ptr_vector 析构函数或 clear() 函数会删除它包含的指针还是我必须自己做?
c++ - 在 boost::ptr_vector 中访问派生对象
我正在使用 boost::ptr_vector < class A > ,我还使用它来存储 B 类的对象:公共类 A。我希望能够访问向量中的 B 类对象;我如何投射以获得访问权限?
c++ - C++ 在 boost::ptr_container 中共享元素?
请考虑以下代码:
我不想copy
将元素放入vec1
,而是以提供的方式共享shared_ptr<>
。我的要求基本上是:
- 在另一个容器实例中共享作为容器一部分的一系列对象的相同实例
- 不想在超过这两个容器中共享一个实例
- 希望在一个元素“突然”从另一个容器中删除时收到通知(或者至少检查一下,例如类似的东西
shared_ptr::unique()
)
两个容器都属于同一类。因此,它们具有相同的范围,并且将同时被销毁。这些类的构造函数构造了两个容器。建造完成后,这些容器不会有任何修改。
我需要使用 a std::vector<>
ofshared_ptr<>
还是有其他解决方案?
c++ - 错误:“Config::testMap”的使用无效
这是代码:
我是地图新手 - 以前从未使用过。我在网上找到了很多如何使用它们的例子。不幸的是,我似乎无法理解它们的更高级示例。
我想做的是创建一个带有键(std::string
)和值(boost::ptr_vector<struct>
)的地图。
我打算首先声明并成功传递它。然后我想试着弄清楚如何填满它。
我遇到了一个非常模糊的错误,我不知道如何解释它。
关于我在“使用”中做错了什么有什么建议testMap
吗?
另外,有人可以提供一些简单的例子来说明我如何填充地图。
假设我想要一个 的键a
和一个 的值str1 = "hello", var1 = 10
。我该怎么做?
跟进问题:关于Kerrek SB 留下的答案。
如果我执行以下操作...
我收到以下错误:
相反,如果我执行该.insert()
方法,则会收到以下错误:
跟进:
根据我的研究,这是不可能的。
您不能ptr_vector
在地图中使用 a。(所以我被告知)由于所有权/复制问题?
“当您尝试复制 ptr_vector 时会发生什么,这必然会发生在地图内?指针容器模拟指针的独占所有权。
你可以用 C++0x 和 std::move 做到这一点,但这对你没有帮助。”
谁能提供一个反例?
c++ - 添加成员 boost::ptr_vector<>
我有休闲课程:
和
要将 CpuCore 对象添加到 cpuCores 向量中,我应该添加一个指针吗?或者我可以正常复制该值,例如:
使用 CpuCore *_newVal 参数,我有以下错误:
../src/usage/CpuUsage.h:42: error: 'boost::ptr_vector > CpuUsage::cpuCores' is private ../src/NodeInfoGather.cpp: 73:错误:在这种情况下
向量在这里是私有的有什么问题?
谢谢,