c++ - 使用与 double 数组的内存匹配的 std::vector

标签 c++ c vector

我正在尝试连接两个现有代码库——一个使用 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/

相关文章:

vector - 如何将零添加到整数Vec之前? [复制]

c++ - 用模板化类型指定模板化类型的类型

c - malloc 将 errno 设置为 EAGAIN

c++ - QTextEdit 插入文本

c++ - 从 http header 中提取 cookie

c++ - Hadoop C++ WordCount 示例编译问题

检查文件是否为空

c - shell 管工艺组 : ls | cat works but ls | more hangs?

c++ - 将同一 vector 中的元素push_back安全吗?

c++ - 查找数组中素数的个数