问题标签 [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 投票
1 回答
157 浏览

c++ - C++:成员引用还是指针?

我有一个boost::ptr_vector需要传递给几个仿函数的对象集合(当前)(我们称之为 vec)。我希望所有的仿函数都有一个指向同一个 vec 的引用/指针,它本质上是一个缓存,这样每个仿函数都有相同的数据缓存。我可以想到三种方法来做到这一点:

  1. 将 a 传递给Functor 类boost::ptr_vector<object>&的构造函数Functor并拥有一个成员boost::ptr_vector<object>&

  2. 将 a 传递boost::ptr_vector<object>*给 Functor 的构造函数并boost::ptr_vector<object>*在 Functor 类中有一个成员

  3. 避免使用boost::ptr_vector并直接将数组 ( object*) 传递给构造函数

我曾尝试使用方法 3,但一直有人告诉我应该使用向量而不是原始指针。因此,我尝试了方法 2,但是由于指针添加了额外的间接级别,这增加了我的程序的延迟。我目前正在使用方法 1,但是我可能需要在仿函数的生命周期内重新分配缓存(因为数据缓存可能会更改),因此这可能不是一个合适的选择。

我不完全理解。我假设仿函数被复制的过程中的某个地方(尽管这些都存储在 ptr_vector 本身中)。

方法 3 最适合我的情况吗?方法 2,太慢了(延迟非常关键),至于方法 1,我一次又一次地被建议使用向量来代替。

非常感谢任何建议

0 投票
2 回答
712 浏览

c++ - C++:为什么 boost::ptr_vector 调整大小需要对象具有默认构造函数

我在 std::vector 上使用 boost::ptr_vector 因为它将为我处理所有指针的删除。但是,当我这样做时:

它抱怨SoftLabelRandomTreeFunctor没有默认构造函数。但是,我的印象是它只需要调整大小以适应number_of_functors* 指向 a 的指针的大小SoftLabelRandomTreeFunctor,而不是number_of_functors* aSoftLabelRandomTreeFunctor本身的大小?

0 投票
2 回答
185 浏览

c++ - BOOST 和 C++:似乎无法让多态性发挥作用

我正在使用 ptr_vector 来存储“形状”。我试图用派生的形状类填充它,例如“圆圈”,每次我尝试向下转换它们时,我都会得到糟糕的演员表。

0 投票
3 回答
633 浏览

c++ - C++ 使用 boost::ptr_vector 泄漏内存

当打开任务管理器查看内存使用情况时,它会以 0.3MB 内存开始使用。将 100,000 个对象添加到 ptr_vector 后,使用了 2.3MB 的内存。在向量上使用 .clear() 后,内存变为 .8-.9MB。内存使用量增加的原因是什么?

这是代码:

谢谢您的帮助。

0 投票
1 回答
115 浏览

c++ - boost::ptr_vector 和指针

我想做这样的事情:

我希望我的对象都被指针引用,这样它们的复制构造函数就不会被调用,而且我还希望ptr_vector在整个向量超出范围时控制内存管理。

但是,编译器抱怨最后一行。我认为这是因为我正在存储X*,而不仅仅是X.

X 只包含原始类型,以防有人询问。

如何使用ptr_vectorto 存储X*

编辑:

0 投票
1 回答
439 浏览

c++ - boost::ptr_vector 排序函数

我有一个 boost::ptr_vector,我想按排序顺序维护它。

我正在创建一堆包含几个简单字符串和值的客户对象,然后将它们存储在 boost::ptr_vector 中,并且它们需要按其中一个字符串排序。

我环顾四周,但似乎找不到关于 boost::ptr_vector 成员函数的太多信息,但似乎有一个名为 sort() 我认为与我正在尝试做的事情相关,但是没有太多信息关于这个功能的使用。

是否有可用于 boost::ptr_vector 的“按顺序插入”类型函数?还是我需要将所有内容加载到向量中然后排序?

任何帮助将不胜感激谢谢

0 投票
1 回答
39 浏览

c++ - boost::ptr_vector 成员函数列表

我很难找到 boost::ptr_vector 有什么成员函数..

我能找到的只是http://www.boost.org/doc/libs/1_54_0/libs/ptr_container/doc/ptr_vector.html,但没有列出我知道的 push_back() 绝对是一个函数..

是否有任何资源可以找到可以与 boost::ptr_vector 及其原型一起使用的函数?

具体来说,如果有类似于 STL vector.insert() 的“插入”类型函数,我很感兴趣

任何帮助,将不胜感激..

0 投票
1 回答
70 浏览

c++ - 为 boost::ptr_vector 创建一个容器类

我正在尝试为 boost::ptr_vector 创建一个容器类,而我只是在让迭代器工作时遇到了一些麻烦..

这是我试图实现的成员函数之一:

我得到的错误是:

关于如何解决这个问题的任何想法?

0 投票
1 回答
183 浏览

c++ - 制作 boost::ptr_vector 容器类 push_back 函数

我只是对容器类和模板有所了解,并且无法弄清楚如何正确实现它们..我所有的问题都非常相似,所以一旦我得到这个排序,我想我应该没问题..

这是我试图实现的 push_back 成员函数的代码:

这就是它在 p_vcontainer.h 中的定义方式:

这是我从编译器得到的错误:

这就是我在main中实现它的方式:

关于我做错了什么的任何想法?

0 投票
2 回答
50 浏览

c++ - 从 boost::ptr_vector 获取模板参数

boost::ptr_vector<T>我试图得到T,但boost::ptr_vector<T>::value_type似乎是T*。我怎样才能得到T

看着文档,我看到:

这些都没有帮助...