C++ で画像処理アプリケーションを作成しています。イメージ タイプを定義するために、ブースト マルチ アレイ、ブースト ublas マトリックス、または Eigen 2D マトリックスのいずれかを使用することを検討しています。私が行おうとしているすべてのさまざまな操作について、これらを慎重にベンチマークし、それに応じて 1 つを選択したいと思います。
しかし、開発を中断する余裕はありません。したがって、画像タイプの定義を ublas、Eigen、または multiarray から別のものに簡単に交換できるようにコードを書き始めたいと思います。これらのライブラリでは要素アクセサー演算子が異なるため、typedef がここで私を救うとは思いません。
たとえば、3 つのライブラリのそれぞれで次のように 2D 配列 'myArray' の要素にアクセスします。 Boost multiarray : myArray[x][y] Boost ublas : myArray (x,y)
[][] と ( _ 、 _ ) の要素へのアクセス方法の間に競合があることがわかります。したがって、単純な typedef を使用して、ある型のコードを記述し、別の型で動作させることはできません。
これを回避する方法はありますか?
基になる型を、アクセス方法を標準化する新しいユニバーサル型にラップすることを考えています。その後、typedef を使用して、ある型を別の型に簡単に交換できます。心配すべき落とし穴はありますか? それは私に多くの効率を要しますか?ここで最も活用できる言語機能は何ですか?
始めるのを手伝っていただければ、コードを書いてここに貼り付けて、さらに確認します。PS 私はこれら 3 つのタイプの豊富な API を使用していません。私は単にそれらを作成し、それらの要素にアクセスしています。