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值[x] [y]创建了一个“数组数组”,但值的内存实际上只是一个连续的块,基本上是char linear_values [x * y].
如果你调整std :: vector的大小以包含一个x * y元素的数量,它应该给你相同的底层动态分配的数组空间.
c函数将按行主顺序访问数组,因此第一行元素将首先出现,然后是第二行等等…
标签:c-3,c,stdvector 来源: https://codeday.me/bug/20190723/1515621.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。