Я пишу расширение Matlab, используя библиотеку ublas C++, и я хотел бы иметь возможность инициализировать свои векторы ublas из массивов C, переданных интерпретатором Matlab. Как я могу инициализировать вектор ublas из массива C без (ради эффективности) явного копирования данных. Я ищу что-то в следующих строках кода:
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