指向std :: vector的数据指针

时间:2014-03-22 20:33:19

标签: arrays visual-c++ visual-studio-2012

我收到以下代码段的异常:

//      matlab mex program ...
float *ptr=new float[n*m];
.
.
.
std::vector<float> v(n*m);
v.assign(ptr);

如何正确地将ptr分配给向量v

1 个答案:

答案 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