将指针参数传递给std :: vector函数

时间:2016-01-19 14:18:51

标签: c++

我有一个C ++应用程序(我们称之为“客户端”),它广泛使用双指针在其函数和几个dll之间存储和传递数组。

我需要将它与C ++库集成,而不是将函数参数公开为std :: vector。 我很清楚,“最干净”的答案是重写客户端以用向量替换指针,但目前这不是一个选项。

例如,这是库提供的功能之一:

EXPORT void* swt(vector<double> &, int , string , vector<double> &, int &);

这是我需要作为第一个参数传递给上面函数的双指针之一:

double* TSF_MAD = (double*)malloc(DatasetsCount*sizeof(double));

我已经尝试了以下两种方法,但都引发了同样的错误(C2664):

swt(TS, TSLen, "Test", TS, d);
swt(&TS[0], TSLen, "Test", &TS[0], d);

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

您不能将指针传递给需要向量的函数。你需要传递一个向量。如果你有一个指向对象数组的指针,那么你可以将数据复制到一个向量中,然后将该向量传递给该函数。

tril

通过接受模板化迭代器可以更好地实现库,这样就可以使用任何数据结构,例如原始数组,向量或集合。就像标准库中的算法一样。它还允许在向量内传递部分范围,而不是整个容器。如果你可以修改库,那么我建议你这样做。