gpt4 book ai didi

c++ - 有没有办法将 'std::vector 2d' 作为指向 '2d c array' 的指针传递给函数

转载 作者:行者123 更新时间:2023-11-30 03:00:56 25 4
gpt4 key购买 nike

有没有办法将“std::vector 2d”作为指向“2d c 数组”的指针传递给函数。

我知道您可以将 std::vector 1d 作为指向 c 数组的指针传递给某个函数。例如,功能:

void foo(char* str); //requires the size of str to be 100 chars

std::vector<char> str_;
str_.resize(100);
foo(&str_[0]); //works

我想知道二维 vector 是否也可以像功能

void foo(char** arr_2d);

和 vector

std::vector<std::vector<char>> vector_2d;

我尝试了以下代码,但我收到了一些与堆损坏相关的错误。

std::vector<std::vector<unsigned char>> vector_2d;
//assuming function expects the size of the vector to be 10x10
vector_2d.resize(10);
for(int i=0;i<10;i++)
{
vector_2d[i].resize(10);
}
foo(&vector_2d[0]);//error here

最佳答案

以下是您可以执行的操作:

std::vector< std::vector<unsigned char> > vector_2d;
vector_2d.resize(10);
std::vector<unsigned char*> ptrs(vector_2d.size());
for(int i=0;i<10;i++)
{
vector_2d[i].resize(10);
ptrs[i] = &vector_2d[i][0];
}
foo(&ptrs[0]);

关于c++ - 有没有办法将 'std::vector 2d' 作为指向 '2d c array' 的指针传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11569770/

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