在我正在从事的项目中,由于所用数据的大小事先未知,因此我需要进行一些动态分配。 std::vector似乎很适合此用例。但是,由于软件环境的原因,我无法在 header 中使用“现代” C++。我想将此 vector 数组转换为与兼容的 header 一起使用。
快速示例:
void func(int tab[][]/*Vector can not be used here*/){/*Do things*/}
int main(){
std::vector<int> vecTab[6/*Fixed, prior known, dimension*/];
//Adding a random number of values in each vector (equal number in each one)
//Transformation of vecTab
func(vecTabMod);
return 1;
}
这个站点上有很多类似的问题,但都没有真正解决二维数组问题。奖励点:没有重新分配,可以通过指针进行访问
最佳答案
您需要将数据指针复制到单独的数组中,以使类型和布局与功能预期的匹配。由于此数组的大小是固定的,因此无需堆分配即可完成此操作。
int* vecTabMod[6];
std::transform(std::begin(vecTab), std::end(vecTab), std::begin(vecTabMod),
[](auto& v) { return v.data(); });
func(vecTabMod);
关于c++ - 转换二维C数组中的std::vector数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62678803/