C ++ ublasライブラリを使用してMatlab拡張機能を記述していますが、Matlabインターペッターによって渡されたC配列からublasベクトルを初期化できるようにしたいと思います。(効率のために)データを明示的にコピーせずに、C配列からublasベクトルを初期化するにはどうすればよいですか。次のコード行に沿って何かを探しています。
using namespace boost::numeric::ublas;
int pv[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
vector<int> v (pv);
std::vector一般的に、配列からC ++を初期化することは可能ですか?このようなもの:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int pv[4] = { 4, 4, 4, 4};
vector<int> v (pv, pv+4);
pv[0] = 0;
cout << "v[0]=" << v[0] << " " << "pv[0]=" << pv[0] << endl;
return 0;
}
ただし、初期化によってデータがコピーされない場合。この場合、出力は次のようになります。
v[0]=4 pv[0]=0
しかし、出力を同じにしたいのですが、C配列を更新すると、C++ベクトルが指すデータが変更されます。
v[0]=0 pv[0]=0