我尝试将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;
}
答案 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();
}