【发布时间】:2012-11-14 16:00:41
【问题描述】:
我有一个需要传递给几个函子的对象集合(当前为boost::ptr_vector)(我们称之为 vec)。我希望所有的仿函数都有一个指向同一个 vec 的引用/指针,它本质上是一个缓存,这样每个仿函数都有相同的数据缓存。我可以想到三种方法:
将
boost::ptr_vector<object>&传递给Functor的构造函数并在Functor 类中有boost::ptr_vector<object>&成员将
boost::ptr_vector<object>*传递给Functor 的构造函数并在Functor 类中有boost::ptr_vector<object>*成员避免使用
boost::ptr_vector,直接将数组(object*)传递给构造函数
我曾尝试使用方法 3,但一直有人告诉我应该使用向量而不是原始指针。因此,我尝试了方法 2,但是由于指针添加了额外的间接级别,这增加了我的程序的延迟。我目前正在使用方法 1,但是我可能需要在仿函数的生命周期内重新分配缓存(因为数据缓存可能会更改),因此这可能不是一个合适的替代方案。
我不完全理解。我假设仿函数被复制的过程中的某个地方(尽管这些都存储在 ptr_vector 本身中)。
方法 3 最适合我的情况吗?方法二,太慢了(延迟很关键),至于方法一,我一再被建议改用向量。
非常感谢任何建议
【问题讨论】:
-
在方法之间切换时您是否忘记了签名中的
*? -
@Constantin 就是这样,从问题中删除了错误并使其更普遍地了解我应该使用哪种方法
标签: c++ arrays pointers reference ptr-vector