如何在C++中获得二维向量的大小

536 阅读3分钟

在这篇文章中,我们将学习如何在C++中获得二维向量的大小。这个话题有广泛的应用,比如在图形中,甚至在机器学习中。习惯于在C++中处理二维向量有助于我们更容易地处理问题。

目录:

  1. C++中一维向量的大小
  2. C++中二维向量MxN的大小
  3. 如果我们的二维向量有不同的列大小怎么办?

前提是:C++中的二维向量

让我们开始学习C++中的二维向量的大小。我们还介绍了如何在C++中获得二维向量的元素总数。

C++中的一维向量的大小

让我们从一维向量开始。想象一下,一维向量是excel或google sheet中的一行,也就是只有一行的表格,在这一行中,你有很多元素,比如说:

5635

上面的表格有1行和4列(或元素)。为了概括它,让我们称m为行的数量,n为列的数量。在这种情况下,m是1,n是4。

定义一维矢量有很多方法,但是为了简单起见,我们将像下面这样定义它:

vector<int> vect{5, 6, 3, 5};

为了得到矢量的大小,我们只需要使用.size() 函数:

vector<int> vect{5, 6, 3, 5};
int n;
n = vect.size(); // n = 4

C++中二维向量MxM的大小

同样,对于二维向量来说,想象一个二维表格,就像在google sheet或excel中一样!这就是我们的二维向量应该有的样子。这就是我们的二维向量应该有的样子。

一个二维向量有m行和n列。比如说:

563
124

上面的表格有m=2行和n=3列。

我们可以像在这个链接中一样定义一个二维矢量

为了加快进程,我们假设我们有一个矢量vect ,我们要这样定义它。

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

而这就是上面的表格在二维向量中的表现。把它想成是一个大的向量,里面包含另外两个小向量。外层向量的长度为2,而两个小向量的大小分别为3。

为了得到向量的大小,我们需要做的是:
假设我们有2个变量mn
,我们要把向量的大小存入其中。

例子

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int m, n;
    vector<vector<int>> vect{{ 5, 6, 3 }, { 1, 2, 4 }};
    m = vect.size(); // size() function is use to return the size of the vector
    n = vect[0].size();
    cout << "The dimension of the vector is " << m << " x " << n << endl;
    // Now m and n will have the values m = 2, n = 3
    cout << "The vector has " << m*n << " elements";
}

输出

The dimension of the vector is 2 x 3
The vector has 6 elements

由于我们的向量有相同的列数,因此我们只需要访问其中一行就可以得到它的大小。为了得到这个向量中的元素总数,我们只需要取m*n,很简单吧?

如果我们的二维向量有不同的列大小呢?

比如第0行有4个元素,而第1行有5个元素?下面的代码将对其进行概括。我们的想法是在一个数组或向量中存储一个行的元素数,这样我们就可以很容易地得到我们想要的行的元素数。为了得到这个向量中的元素总数,我们需要得到大向量中所有小向量的大小之和。下面的代码将更好地解释!

例子

#include <iostream>
#include <vector>

using namespace std;

int main(){
    vector<vector<int>> vect{{ 5, 6, 3, 3 }, { 1, 2, 4, 10, 2 }};
    // here our row 0 has 4 elements of 5, 6, 3, 3
    // row 1 has 5 elements of 1, 2, 4, 10, 2
    int totalElements = 0; // total number of elements
    int m = vector.size(); // number of rows
    vector<int> numElements(m, 0); // vector of m rows
    for(int i = 0; i < m; i++){
        numElements[i] = vect[i].size();
        totalElements += vect[i].size();
    }
    
    for(int i = 0; i < m; i++) {
        cout << "Row " << i << " has " << numElements[i] << " elements\n";
    }
    cout << "The vector has " << totalElements << " elements";
    
}
// at the end we will have numElments of all rows
// the total element is stored in totalElements

输出

Row 0 has 4 elements
Row 1 has 5 elements
The vector has 9 elements

这就是OpenGenus的这篇文章了!谢谢你的阅读!