如何将vector作为函数参数传递给指针

时间:2014-09-10 16:42:59

标签: c++ class pointers vector arguments

我尝试将vector作为函数参数传递给指针,但编译器总是返回错误。

  

错误:无法转换' std :: vector'到'浮动*'在任务中

当我以相同的方式传递数组时,它完美地工作。那么这里有什么问题?是否可以将向量分配给指针?

vector <float> test;

class data {
    float *pointer;
    int size;
  public:
      void init(vector <float> &test, int number);
};

void data::init(vector <float> &test, int number)
{
    size= number;
    pointer = test;
}

2 个答案:

答案 0 :(得分:6)

如果你想要一个指向由向量管理的数组的指针,那么那就是

pointer = test.data();                       // C++11 or later
pointer = test.empty() ? NULL : &test[0];    // primeval dialects

请注意,如果向量被销毁或分配其内存,这将无效。

答案 1 :(得分:1)

从C ++ 11开始,您可以使用std::vector::data

void data::init(std::vector<float> &test, int number)
{
    size = number;
    pointer = test.data();
}