uda 3.C++二维向量
二维向量
接下来,你将使用向量来存储矩阵。就像 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 <int> > twodvector;
声明了一个叫做 twodvector 的空二维向量。有几件事要注意:
- 就像 C++ 中的所有变量一样,你必须声明向量中将使用哪种类型的值。在本例中,twodvector 变量将使用整数。
- 注意括号之间的空格
< vector <int> >
。如果空格不正确,程序可能无法运行。
然后,声明一个叫做 singlerow 的一维向量。singlerow 向量的形式为 [2, 2, 2]。
vector<int> 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 <int> > twodvector (5, vector <int> (3, 2));
语法要稍微复杂一点。但是,如果从括号内往外看,你会发现它实际上已经具备所有功能。
这一行:
vector <int> (3, 2)
可以设置一个整数向量,如 [2, 2, 2]。所以,即使你看不到内部的向量,代码的功能依然是这样的:
vector < vector <int> > 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 <int> > 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;
uda 3.C++二维向量的更多相关文章
- [LeetCode] Flatten 2D Vector 压平二维向量
Implement an iterator to flatten a 2d vector. For example,Given 2d vector = [ [1,2], [3], [4,5,6] ] ...
- 【Unity3D】计算二维向量夹角(-180到180)
在Unity3D中,有时候我们需要计算二维向量的夹角.二维向量夹角一般在0~180度之前,可以直接调用Vector2.Angle(Vector2 from, Vector2 to)来计算. 但是在有些 ...
- [VB.NET][C#]二维向量的基本运算
前言 在数学中,几何向量指具有大小(Magnitude)和方向的几何对象,它在线性代数中经由抽象化有着更一般的概念.向量在编程中也有着及其广泛的应用,其作用在图形编程和游戏物理引擎方面尤为突出. 基于 ...
- 用vector实现二维向量
如果一个向量的每一个元素是一个向量,则称为二维向量,例如 vector<vector<int> >vv(3, vector<int>(4));//这里,两个“> ...
- [LeetCode] 251. Flatten 2D Vector 压平二维向量
Implement an iterator to flatten a 2d vector. For example,Given 2d vector = [ [1,2], [3], [4,5,6] ] ...
- [Swift]LeetCode251.展平二维向量 $ Flatten 2D Vector
Implement an iterator to flatten a 2d vector. For example,Given 2d vector = [ [1,2], [3], [4,5,6] ] ...
- 二维离散余弦变换(2D-DCT)
图像处理中常用的正交变换除了傅里叶变换以外,还有一些其它常用的正交变换,其中离散余弦变换DCT就是一种,这是JPEG图像压缩算法里的核心算法,这里我们也主要讲解JPEG压缩算法里所使用8*8矩阵的二维 ...
- 二维vector的使用
和数组一样,数组有二维的数组,vector也有二维的vector.下面就介绍一下二维vector的使用方法. 一般声明初始化二维vector有三种方法 (1) vector< vector< ...
- 二维DCT变换 | Python实现
引言 最近专业课在学信息隐藏与数字水印,上到了变换域隐藏技术,提到了其中的DCT变换,遂布置了一个巨烦人的作业,让手动给两个\(8\times8\)的矩阵做二维DCT变换,在苦逼的算了一小时后,我决定 ...
随机推荐
- proteus 8.8 直装版提示Symbol $MKRORIGIN used but not found in libraries 安装后没有库
用管理员运行程序,然后再通过菜单打开仿真文件是没问题. 解决方法:通常的安装目录是C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Prof ...
- 机房收费系统vb.net之打包与部署(二)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/wangdan199112/article/details/28286365 ...
- 2019.9.18 csp-s模拟测试46 反思总结
神志不清: 回去休息(x)继续考试(√) 非常爆炸的一次考试.看错题码完T1回去再看发现自己过于幼稚,T2读完题看着16mb的空间秒出正解然后逻辑出现致命失误100pts->0pts,T3看了一 ...
- xor
xor 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言1048576K 64bit IO Format: %lld 题目描述 Your are given n ...
- 洛谷P1979 [NOIP2013提高组Day2T3]华容道
P1979 华容道 题目描述 [问题描述] 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少 ...
- 洛谷P1006 NOIP提高组2008 传纸条
P1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n 列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无 ...
- php中 重载的方法
php中 重载(一)这个文章,谢谢.作为初学者,大牛勿喷: 基本是两个方法 __call,当调用对一个不可访问的对象方法时,会自动执行该魔术方法!(对象调用) 典型的两种处理方式: 1,给出友好的提示 ...
- PHP--反射的方法
反射,直观理解就是根据到达地找到出发地和来源.比如,一个光秃秃的对象,我们可以仅仅通过这个对象就能知道它所属的类.拥有哪些方法. 反射是指�php运行状态中,扩展分析PHP程序,导出或提出关于类.方法 ...
- Vue--vue中的组件、组件绑定事件和数据、私有组件、子组件,父子组件参数互传
一.公有组件以及组件的使用和特点 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- line-height的用法(一)
行高”顾名思意指一行文字的高度.具体来说是指两行文字间基线之间的距离. 从上到下四条线分别是顶线.中线.基线.底线,很像才学英语字母时的四线三格,我们知道vertical-align属性中有top.m ...