c++ - 转换二维C数组中的std::vector数组

标签 c++ multidimensional-array

在我正在从事的项目中,由于所用数据的大小事先未知,因此我需要进行一些动态分配。 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/

相关文章:

c++ - 访问基类对象中的 protected 成员

C++ 模板图灵完备?

PHP array_column - 如何保留 key ?

java - 小挑战。比较 3 个单独数组的总和

java - 使用位运算符 JAVA 交换 int[][] 数组中每行/列的顶部和底部 2 位

c++ - 如何防止模板类被多次派生?

python - python 导演使用的 swig 错误 c++

c++ - 什么时候需要用括号括起 requires 子句表达式? (一语双关)

python - 使用 ctypes 访问变量数组的内容

php - 如何从mysql数据库在PHP中的多维数组中添加数组?