我可以将std :: vector <int>*转换为int*吗?

god*_*zsa 2 c++ arrays vector pvm

假设我有一个std::vector<int>* foo;并且我必须使用它作为int*(int的数组,而不是指向int的指针)用于旧的C类型库PVM.就我而言,这可能会起作用,因为vector它将元素存储在内存中就像数组一样.所以我试过了(int*)foo,但不知怎的,我得到一个我无法调试的错误,所以我认为这一定是问题所在.任何想法,想法,优雅的解决方法?

App*_*ish 9

您不能将向量直接转换为数组,因为向量对象由指向数组数据的指针组成,而不是由动态分配的数组数据本身组成.要访问基础数组,请使用data()成员函数:

std::vector<int> vec;

int *arr = vec.data();
Run Code Online (Sandbox Code Playgroud)

要么

std::vector<int> *vecp = new std::vector<int>;

int *arr = vecp->data();
Run Code Online (Sandbox Code Playgroud)