我正在尝试连接两个现有代码库——一个使用 C,另一个使用 C++。 C++ 代码使用 std::vector 而另一个基于 double 组。我想从 C 代码传递 double 组,在 C++ 代码中对 std::vectors 执行操作,并最终将这些操作反射(reflect)在 double 组中。
是否可以创建一个std::vector来匹配double数组占用的内存?
我尝试了几种选择,但它们都涉及创建一个新 vector 和将 double 数组的拷贝复制到该 vector 中。例如:
void fcn(double* a, int sizeofa)
{
std::vector<double> vect_a;
vect_a.assign(a, a + sizeofa);
// operations on vect_a
for (int i=0;i<sizeofa;i++) { a[i] = vect_a[i]; }
}
最佳答案
如评论中所述,std::vector
管理自己的内存,您不能让它使用其他内存作为后备存储(如果大小发生变化,它会不知道该怎么做,等等)。
但你可能不需要 vector
根本;如果你只是使用 vector
对于非动态大小相关的功能,很可能你可以只使用 the functions from <algorithm>
直接在您要使用的阵列上执行相同的工作 vector
的方法来完成。
关于c++ - 使用与 double 数组的内存匹配的 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38003202/