gpt4 book ai didi

c++ - 定义我的二维数组以支持 [] 和 () 访问操作

转载 作者:行者123 更新时间:2023-11-30 01:52:30 24 4
gpt4 key购买 nike

我正在用 C++ 编写图像处理应用程序。为了定义我的图像类型,我正在考虑使用 boost 多阵列、boost ublas 矩阵或 Eigen 2D 矩阵。我想针对我打算执行的所有各种操作仔细地对这些进行基准测试,并相应地选择一个。

但是,我不能暂停开发。因此,我想以这样一种方式开始编写代码,以便将我的图像类型定义从 ublas、Eigen 或 multiarray 交换到另一个。我不认为 typedef 会在这里拯救我,因为这些库中的元素访问器运算符是不同的。

例如,您可以在三个库中按如下方式访问二维数组“myArray”的元素: boost 多阵列:myArray[x][y] boost ublas : myArray (x,y) Eigen 二维矩阵:myArray(x,y)

您可以看到冲突发生在 [][] 与 ( _ , _ ) 访问元素的方式之间。因此,我无法为一种类型编写代码,然后使用简单的 typedef 使其与另一种类型一起工作。

有什么办法解决这个问题吗?

我正在考虑将底层类型包装成一个新的通用类型,它标准化了访问方法,然后我可以简单地使用 typedef 将一种类型换成另一种类型,有什么我应该担心的陷阱吗?会不会浪费我很多效率?在这里可以最好地利用哪些语言功能?

如果您能帮助我开始,我将编写代码并将其粘贴到此处以供进一步审查。附言我没有使用这三种类型的任何丰富 API。我只是在创建它们,并访问它们的元素。

最佳答案

我会使用 Proxy Pattern对于这种情况。您只需简单地环绕代理并定义一个将使用您的底层对象的唯一接口(interface)。希望这会有所帮助....

编辑:

我想这个链接也应该有用:Template Proxy

关于c++ - 定义我的二维数组以支持 [] 和 () 访问操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24474198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com