在这篇文章中,我们将学习如何在C++中获得二维向量的大小。这个话题有广泛的应用,比如在图形中,甚至在机器学习中。习惯于在C++中处理二维向量有助于我们更容易地处理问题。
目录:
- C++中一维向量的大小
- C++中二维向量MxN的大小
- 如果我们的二维向量有不同的列大小怎么办?
前提是:C++中的二维向量
让我们开始学习C++中的二维向量的大小。我们还介绍了如何在C++中获得二维向量的元素总数。
C++中的一维向量的大小
让我们从一维向量开始。想象一下,一维向量是excel或google sheet中的一行,也就是只有一行的表格,在这一行中,你有很多元素,比如说:
| 5 | 6 | 3 | 5 |
上面的表格有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列。比如说:
| 5 | 6 | 3 |
| 1 | 2 | 4 |
上面的表格有m=2行和n=3列。
为了加快进程,我们假设我们有一个矢量vect ,我们要这样定义它。
vector<vector<int>> vect{{ 5, 6, 3 }, { 1, 2, 4 }};
而这就是上面的表格在二维向量中的表现。把它想成是一个大的向量,里面包含另外两个小向量。外层向量的长度为2,而两个小向量的大小分别为3。
为了得到向量的大小,我们需要做的是:
假设我们有2个变量m和n
,我们要把向量的大小存入其中。
例子
#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的这篇文章了!谢谢你的阅读!