gpt4 book ai didi

c++ - 如何在 C 函数中使用 std::vector

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:43 25 4
gpt4 key购买 nike

C 函数期望缓冲区数组在运行时处于范围内。例如

char values[x][y]

C 函数将填充缓冲区
我想使用动态数组,这样我就不必对尺寸进行硬编码
在这种情况下如何使用 std::vector?

需要说明的是,我使用的是 C++。 C 函数包含在我无法修改的库中。

最佳答案

如果您只想将封装在 std::vector 中的动态数组传递给 c 例程,您可以传递一个指向底层数组头部的指针,如下所示:

std::vector<char> myvector;
// size-up myvector as needed
foo(&myvector[0]); // pass a pointer to start of myvector to function foo

c++ 标准确保 std::vector 中的底层数组始终是连续的。

希望这对您有所帮助。

编辑:虽然声明 char values[x][y] 创建了一个“数组的数组”,但 values 的内存实际上只是一个连续的 block ,本质上字符线性值[x * y]

如果您调整 std::vector 的大小以包含 x * y 元素的计数,它应该为您提供相同的底层动态分配数组空间。

c 函数将以行优先顺序访问数组,因此第一行元素将首先出现,然后是第二个完整行等......

关于c++ - 如何在 C 函数中使用 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6701816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com