我正在使用 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