博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uda 3.C++二维向量
阅读量:6996 次
发布时间:2019-06-27

本文共 1982 字,大约阅读时间需要 6 分钟。

二维向量

接下来,你将使用向量来存储矩阵。就像 Python 使用列表列表来存储矩阵一样,C++ 使用的是向量的向量。用于声明二维向量的语法有点复杂。

假设你正在使用 Python,并且想存储一个 3 乘 5 的矩阵。你可以这么写:

matrixexample = [[2,1,5], [7,9,2], [16,5,9], [5,2,1], [1,2,4]]

在 C++ 中,你可以将矢量附加到矢量来创建一个类似的结构。下面是 Python 和 C++ 代码的比较。我们来看看:

 
 

代码解释

首先,这一行

vector < vector 
> twodvector;

声明了一个叫做 twodvector 的空二维向量。有几件事要注意:

  • 就像 C++ 中的所有变量一样,你必须声明向量中将使用哪种类型的值。在本例中,twodvector 变量将使用整数。
  • 注意括号之间的空格 < vector <int> >。如果空格不正确,程序可能无法运行。

然后,声明一个叫做 singlerow 的一维向量。singlerow 向量的形式为 [2, 2, 2]。

vector
singlerow (3,2);

然后 singlerow 向量被追加到 twodvector 五次:

for (int i = 0; i < 5; i++) {        twodvector.push_back(singlerow);    }

最终将得到与 Python 代码中一样的二维结构。运行这段 C++代码后,终端会输出如下结果:

2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 

另一种设置向量的方法

以下是前面的例子中设置向量的另一种方法:

vector < vector 
> twodvector (5, vector
(3, 2));

语法要稍微复杂一点。但是,如果从括号内往外看,你会发现它实际上已经具备所有功能。

这一行:

vector 
(3, 2)

可以设置一个整数向量,如 [2, 2, 2]。所以,即使你看不到内部的向量,代码的功能依然是这样的:

vector < vector 
> twodvector (5, [2, 2, 2]); `

然后,代码将[2, 2, 2] 五次应用到 twodvector 变量中:

[[2,2,2],[2,2,2], [2,2,2], [2,2,2], [2,2,2]]

请记住,只有 Python 才会用方括号[]表示向量或矩阵。较新版本的 C++可以使用大括号来表示矢量{},但 C++ 的较早版本没有对应的表示形式。

像下面这样的代码无法在 C++ 中运行:

vector < vector 
> twodvector (5, [2, 2, 2]); `

二维向量与 for 循环

由于二维向量只是向量内的向量,因此,二维向量和一维向量具有 。

这就是例子中 cout 代码的作用原理:

for (int row = 0; row < twodvector.size(); row++) {        for (int column = 0; column < twodvector[0].size(); column++) { cout << twodvector[row][column] << " "; } cout << endl;

输入twodvector.size()时,会给出外部向量的大小。外部向量有五个元素,它们表示矩阵中的行数:

{
2 2 2} {
2 2 2} { 2 2 2} { 2 2 2} { 2 2 2}

当你输入twodvector[0].size()时,你实际上是在获取外部向量的第一个元素,[2 2 2],并请求这个向量的大小,在本例中,大小为 3。因此,for 循环实际如下:

for (int row = 0; row < 5; row++) {        for (int column = 0; column < 3; column++) { cout << twodvector[row][column] << " "; } cout << endl;

转载于:https://www.cnblogs.com/fuhang/p/9077624.html

你可能感兴趣的文章
Intel超低功耗CPU的一些信息
查看>>
Qt之信号与槽
查看>>
PDM/PLM系统授权模型的研究和应用(转载)
查看>>
Winform下的Datagrid的列风格(4)—DataGridComboBoxTableViewColumn
查看>>
上传图片 以及做成缩略图
查看>>
封装和多态
查看>>
POJ - 3041 Asteroids 【二分图匹配】
查看>>
luogu P4198 楼房重建——线段树
查看>>
使用property为类中的数据添加行为
查看>>
程序设计基础知识
查看>>
复变函数与积分变换
查看>>
12. 断点续传的原理
查看>>
C#基础:多态:基类可以定义并实现虚(virtual)方法,派生类可以重写(override)这些方法...
查看>>
Visifire图表
查看>>
python常用模块之paramiko与ssh
查看>>
AES算法在Python中的使用
查看>>
动手动脑3
查看>>
HDU 3397 Sequence operation(线段树区间染色加区间合并)
查看>>
【随笔】写下现在所想的,开始写博客
查看>>
linux命令之vi文本编辑器
查看>>