我正在使用C++ ublas库编写Matlab扩展,并且希望能够通过由Matlab中间人传递的C数组初始化我的ublas向量。 如何从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);
一般情况下,是有可能从一个数组初始化C++ std::vector
?事情是这样的:
#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
除了*在理论上*你可以创建一个ublas :: vector的子类来做到这一点。你的子类可以像一个const ublas :: vector一样不可调整大小,或者你必须覆盖调整容器大小所涉及的所有方法,以确保不会释放不属于它的内存。 只有一个完整的受虐狂会尝试这一点。 – 2009-11-16 17:55:22