方法一:
For C++ 11, vector.data()
will do the trick.
方法二:
There is a fairly simply trick to do so, since the spec now guarantees vectors store their elements contiguously.
意思是:由于vector中的元素在内存中是连续存储的,因此只需取第一个元素的地址,就是“元素数组”的首地址。使用方法的伪代码如下:
std::vector<double> vec;
####使用一####
double *a = &v[0]; //a指向vec中的第一个元素的地址,这种共用内存的方法会有内存泄漏的风险,所以使用时务必小心。
####使用二####
double *b = new double[vec.size()];
memcpy(b, &vec[0], vec.size() * sizeof(double)); //拷贝一份副本
double *c = new double[vec.size()];
memcpy(c, vec.data(), vec.size()*sizeof(double)); //同样也是拷贝一份副本