以不同的方式在C ++中初始化2D向量

先决条件:初始化一维向量

在讨论初始化技术之前,让我们先说明一下2D向量。简单来说,二维向量是具有行和列的矩阵。换句话说,2D向量是1D向量的向量,即,具有元素作为1D向量的向量。

那么2D数组的符号是什么?

vector <T> arr,其中T是vector <W>,其中W可以是任何数据类型,例如int,char等。

所以我们将2D整数向量定义为vector <vector <int >> arr

现在,让我们回到初始化2D向量的要点。

1)初始化一个空的2D向量,然后迭代推回1D数组

这是初始化2D向量的最幼稚的方法。首先,我们只定义一个空的2D向量。在那时,它尚不知道它将要包含多少个元素。然后,通过使用push_back()函数,我们可以根据需要简单地在背面添加一维向量。现在要添加一维向量,我们需要正确初始化该一维数组。

下面是一个根据用户需要添加元素的示例。

#include <bits/stdc++.h>

using namespace std;

int main(){

    //空的2Dvector初始化

    vector<vector<int> > two_D_vector;

    //下面是一个空的一维向量

    vector<int> one_D_vector(5, 2);

    //将上述一维矢量推回 

    //每次都清空2D向量

    for (int i = 0; i < 5; i++) {

        two_D_vector.push_back(one_D_vector);

    }

    //打印二维矢量

    cout << "printing the 2D vector\n";

    for (auto it : two_D_vector) {

        //现在是一维向量

        for (auto ij : it) {

            cout << ij << " ";

        }

        cout << endl;

    }

    return 0;

}

输出:

printing the 2D vector

2 2 2 2 2

2 2 2 2 2

2 2 2 2 2

2 2 2 2 2

2 2 2 2 2

2)用用户定义的大小初始化向量

我们也可以使用用户定义的大小来初始化2D向量。就像使用malloc()new运算符创建2D动态数组一样。假设要初始化第n行和第m列的2D向量,那么我们需要使用m个1D向量的元素初始化n个大小为2D的向量。我们可以像下面那样进行操作,默认情况下,二维数组中的所有值都初始化为0。

如前 ,二维向量是一维向量的向量。因此,对于上层用例,让我们与一维矢量完全一样地思考。

因此,外部向量的大小为n(行数)

让我们定义一下

vector<T> arr(n);

现在T本身是一维向量,大小为m

因此,外部向量的元素将为vector <int>(m)

这种结合,

vector<vector<int>> arr(n, vector<int>(m))
#include <bits/stdc++.h>

using namespace std;

int main(){

    //n =行数

    //m =没有列

    //两者都将由用户定义

    int n, m;

    

    cout << "Enter number of rows, n\n";

    cin >> n;

    cout << "Enter number of columns, m\n";

    cin >> m;

    

    //用用户定义的大小初始化2D向量

    vector<vector<int> > two_D_vector(n, vector<int>(m));

    //默认情况下,所有值均为0-

    //打印二维矢量

    cout << "printing the 2D vector\n";

    for (auto it : two_D_vector) {

        //现在是一维向量

        for (auto ij : it) {

            cout << ij << " ";

        }

        cout << endl;

    }

    return 0;

}

输出:

Enter number of rows, n

6

Enter number of columns, m

3

printing the 2D vector

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

3)使用用户定义的大小和用户定义的元素进行初始化

在这里,不是使用默认0进行初始化,而是使用用户定义的值进行初始化。该方法将类似于一维矢量的方法。

所以对于外部向量,

vector<T> arr(T,W)

其中,W是用户定义的元素。现在,这里的元素本身就是一维向量。

因此,示例如下所示,

代码1:

#include <bits/stdc++.h>

using namespace std;

int main(){

    //n =用户定义的行数

    int n;

    

    cout << "Enter number of rows, n\n";

    cin >> n;

    //用户定义的一维数组

    vector<int> one_D_vector{ 1, 2, 3 };

    //用用户定义的大小初始化2D向量,

    //用户定义的元素

    vector<vector<int> > two_D_vector(n, one_D_vector);

    //打印二维矢量

    cout << "printing the 2D vector\n";

    for (auto it : two_D_vector) {

        //现在是一维向量

        for (auto ij : it) {

            cout << ij << " ";

        }

        cout << endl;

    }

    return 0;

}

输出:

Enter number of rows, n

5

printing the 2D vector

1 2 3

1 2 3

1 2 3

1 2 3

1 2 3

代码2:

#include <bits/stdc++.h>

using namespace std;

int main(){

    //n =用户定义的行数

    int n, m;

    

    cout << "Enter number of rows, n\n";

    cin >> n;

    //用户定义的一维数组

    cout << "Define your 1D array which will be element\n";

    vector<int> one_D_vector;

    cout << "keep pushing numbers, press 0 to stop\n";

    cin >> m;

    while (m) {

        one_D_vector.push_back(m);

        cin >> m;

    }

    //2个Dvector用用户定义的大小初始化

    //用户定义的元素

    vector<vector<int> > two_D_vector(n, one_D_vector);

    //打印二维矢量

    cout << "printing the 2D vector\n";

    for (auto it : two_D_vector) {

        //现在是一维向量

        for (auto ij : it) {

            cout << ij << " ";

        }

        cout << endl;

    }

    return 0;

}

输出:

Define your 1D array which will be element

keep pushing numbers, press 0 to stop

3 4 5 0

printing the 2D vector

3 4 5

3 4 5

3 4 5

3 4 5

3 4 5

4)用用户定义的元素初始化2D向量

我们还可以使用用户定义的元素初始化向量。语法为:

vector<vector<int>> two_D_vector{comma separated 1D elements};

示例如下:

#include <bits/stdc++.h>

using namespace std;

int main(){

    //用用户定义的元素初始化

    vector<int> arr{ 1, 2, 3, 4, 5, -1, -2, 6 };

 

    cout << "Printing the vector...\n";

    for (auto i : arr)

        cout << i << " ";

    cout << endl;

 

    return 0;

}

输出:

Printing the vector...

1 2 3 4 5 -1 -2 6

5)用其他向量的元素初始化向量

我们还可以使用另一个向量的元素来初始化向量。该向量作为构造函数传递,以初始化新向量。这确实是一个深复制。

示例如下:

#include <bits/stdc++.h>

using namespace std;

int main(){

    //用用户初始化的2D向量 

    //仅元素

    vector<vector<int> > two_D_vector{

        { 1, 2, 3 }, //逗号分隔列表

        { 5, 6, 7 },

        { 8, 9, 3 }

    };

    //打印二维矢量

    cout << "printing the 2D vector\n";

    for (auto it : two_D_vector) {

        //现在是一维向量

        for (auto ij : it) {

            cout << ij << " ";

        }

        cout << endl;

    }

    return 0;

}

输出:

printing the 2D vector

1 2 3

5 6 7

8 9 3

以上是 以不同的方式在C ++中初始化2D向量 的全部内容, 来源链接: utcz.com/z/334667.html

回到顶部