私はBOOST uBLASベクターのコンストラクタの動作を変更しようとしており、これを実行する最良の方法が何であるか不思議でした。私は、例えば、コンストラクタを使用して、2次元ベクトルの成分(座標)を初期化したい:ブーストベクトルのコンストラクタを変更する
代わりの:
typedef boost::ublas::vector BoostVector;
double x=1;
double y=0.7;
BoostVector<double> v(2);
v(1) = x; v(2) = y; //x and y are vector components/co-ordinates
Iコンストラクタでxとyを指定できるようにしたいです。
BoostVector<double> v(x,y);
私が含有又はブーストベクトルクラスから継承することのいずれか、これを行うためのインタフェースを提供する新しいクラスを作成することができます考えていますが、私はC++にかなり新たなんだと私はわからないんだけどブーストベクトルの機能を保持する最善の方法を説明します。特に、私はuBLASベクタークラスで使用されるテンプレートの発現の最適化を妨げたくありません。これに関するアドバイスは非常に高く評価されます。 ありがとう、 キリアン
返信いただきありがとうございます。私は2つの座標を持つような2Dを意味しました。私はすでにあなたに似たVector2クラスを作成しました。数学的演算のためのメソッドのロード(ドットプロダクトなど)があります。しかし、これらの操作の多くを、見た目で一時的なものが作成されているため、一緒にストリングすると、実際には効率が悪いことが分かりました。これが私がBOOST uBLASベクトルの使用に切り替えることを試みている理由です。私が抱えている問題は、あなたの提案にあるようなuBLASベクターに構築されたコンストラクタがないことです。'Vector2(const T&x、const T&y):mX(x)、mY(y){}' – kieranhood