我收到以下代码段的异常:
// matlab mex program ...
float *ptr=new float[n*m];
.
.
.
std::vector<float> v(n*m);
v.assign(ptr);
如何正确地将ptr
分配给向量v
?
答案 0 :(得分:2)
您可以尝试使用构造函数或赋值。但是,您需要以某种方式传递长度。在标准库中,通过传递序列的开始和结束来做到这一点是一个常见的习惯用法 - 但那些可以是裸指针。像这样:
std::vector<float> v; // Note you do not need the size here
v.assign(ptr, ptr+n*m);
或只是:
std::vector<float> v(ptr, ptr+n*m);
您的分配似乎也有错误:
float *ptr=new float[n*m]; // Allocate floats, not pointers to floats