动态改变分配策略中的boost ::向量和boost ::矩阵
-
05-09-2019 - |
题
在我的新项目我建立一个数据管理module.I想给一个简单的模板存储类型上层像
template<typename T>
class Data
{
public:
T getValue();
private:
boost::numeric::ublas::matrix<T> data;
}
我的目标是,以改变数据的分配器与一些不同的分配器等Boost.inter过程分配器或分配器Boost.pool(升压的uBLAS矩阵与矢量的类需要分配器作为模板参数)。而只给出一个单一的类和厂方法来创建下cover.A虚基类的适当分配器可以是甜的,但我不能处理如何与templates.What种设计模式或解决方案使用你们提供?
编辑:
我会用boost.pool和boost.shared_memory_allocator.Briefly我想有不同的班级,不同的分配strategies.But我的观点是程序上的部分应该没有关于it.Real挑战的知识对我来说就是收集不同的模板类具有相同的基类。
编辑: 对于一个谁想要使用矩阵类自定义分配器。
它是这样的:
using boost::numeric::ublas;
template<typename T, class Allocator = boost::pool_allocator<T>>
class
{
public:
matrix<T, row_major, std::vector<T,Allocator>> mData;
}
解决方案
目前还不清楚你想要什么,但在黑暗中拍摄,是下面有帮助吗?
template<typename T>
class IData
{
public:
virtual T getValue() = 0;
virtual ~IData() {}
};
template<typename T, typename Allocator=std::allocator<T> >
class Data : public IData<T>
{
public:
virtual T getValue();
private:
boost::numeric::ublas::matrix<T, Allocator> data;
}
其他提示
您试图在基于类型的编译时间换分配器?你需要一个if-else
模板和一些allocator类(模板)的定义。
如果你想运行分配器,那么它更容易:你把基类(接口定义类)的模板,并通过适当的子类根据您需要满足什么条件
不隶属于 StackOverflow