我有一个boost::ptr_vector
需要传递给几个仿函数的对象集合(当前)(我们称之为 vec)。我希望所有的仿函数都有一个指向同一个 vec 的引用/指针,它本质上是一个缓存,这样每个仿函数都有相同的数据缓存。我可以想到三种方法来做到这一点:
将 a 传递给Functor 类
boost::ptr_vector<object>&
的构造函数Functor
并拥有一个成员boost::ptr_vector<object>&
将 a 传递
boost::ptr_vector<object>*
给 Functor 的构造函数并boost::ptr_vector<object>*
在 Functor 类中有一个成员避免使用
boost::ptr_vector
并直接将数组 (object*
) 传递给构造函数
我曾尝试使用方法 3,但一直有人告诉我应该使用向量而不是原始指针。因此,我尝试了方法 2,但是由于指针添加了额外的间接级别,这增加了我的程序的延迟。我目前正在使用方法 1,但是我可能需要在仿函数的生命周期内重新分配缓存(因为数据缓存可能会更改),因此这可能不是一个合适的选择。
我不完全理解。我假设仿函数被复制的过程中的某个地方(尽管这些都存储在 ptr_vector 本身中)。
方法 3 最适合我的情况吗?方法 2,太慢了(延迟非常关键),至于方法 1,我一次又一次地被建议使用向量来代替。
非常感谢任何建议