假设我有一个std::vector<int>* foo;
,我必须将其用作int*
(旧的C类型库PVM的(数组,而不是指向int的指针))。就我而言,这可能行得通,因为vector
它们的元素像数组一样彼此相邻地存储在内存中。因此,我尝试了(int*)foo
,但是以某种方式却收到了无法调试的错误,因此我认为这一定是问题所在。有任何想法,想法,优雅的解决方法吗?
您不能将向量直接转换为数组,因为向量对象由指向数组数据的指针组成,而不是指向动态分配的数组数据本身。要访问基础数组,请使用data()
成员函数:
std::vector<int> vec;
int *arr = vec.data();
或者
std::vector<int> *vecp = new std::vector<int>;
int *arr = vecp->data();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句