编写一个会使二维数组变平的函数

时间:2017-11-21 16:35:15

标签: c++ function multidimensional-array vector flatten

所以,我正在尝试编写一个函数,将二维向量展平为一维向量并返回它。例如:

如果我有一个矩阵:

8 7 6 3

2 1 9 4

1 2 3 8

它会简单地将其展平为包含以下内容的单维向量:

8,7,6,3,2,1,9,4,1,2,3,8,

虽然我发现了很多困难。这是我到目前为止所拥有的。

std::vector<int> flatten (std::vector< std::vector< int > > vec)
{
    std::vector<int> flattened (begin(vec), end(vec));

    return flattened;

}

根据我的理解,这允许我创建一个带有第一行中值的向量,但由于我是C ++的新手,我不确定如何进入下一列并添加该行到扁平的矢量。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

为2D矢量编写通用if(isEven(num)) System.out.println("The integer entered is even."); else System.out.println("The integer entered is odd."); 方法

flatten

查看有效的DEMO

答案 1 :(得分:0)

std::vector<int> flatten (std::vector< std::vector< int > > vec)
{
    std::vector<int> flattened;
    for (auto & v : vec){
         std::copy (v.begin(), v.end(), std::back_inserter(flattened));
    }
    return flattened;

}