二维向量

接下来,你将使用向量来存储矩阵。就像 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;

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

uda 3.C++二维向量相关推荐

  1. python二维向量运算模拟_python二维向量运算_[VB.NET][C#]二维向量的基本运算

    前言 在数学中,几何向量是指具有大小和方向的几何对象. 在编程中,向量有着广泛的应用,其作用在图形编程和游戏物理引擎方面尤为突出. 第一节 构造函数 通过创建一个二维向量的类(或结构体),实现向量的表 ...

  2. LeetCode 251. 展开二维向量

    文章目录 1. 题目 2. 解题 1. 题目 请设计并实现一个能够展开二维向量的迭代器.该迭代器需要支持 next 和 hasNext 两种操作.. 示例: Vector2D iterator = n ...

  3. C++:二维数组和二维向量的长度

    对于一个二维数组: int mm[3][5] = { { 1,2,3,4,5 },{ 5,6,7,8,9 },{ 9,10,11,12,13 } }; int toatlnums = sizeof(m ...

  4. 用vector实现二维向量

    如果一个向量的每一个元素是一个向量,则称为二维向量,例如 [cpp] view plain copy   vector<vector<int> >vv(3, vector< ...

  5. c++中二维数组与二维向量的长度

    对于一个二维数组: int mm[3][5] = { { 1,2,3,4,5 },{ 5,6,7,8,9 },{ 9,10,11,12,13 } }; int toatlnums = sizeof(m ...

  6. 从二维向量跟虚数的区别到欧拉公式,复指数函数

    正如我们所知道的,二维向量和虚数都可以写为[a,b]这样子的形式,在平面坐标和复平面都可以都有一个点与之对 应,他们之间是一样的吗? 二维向量的两个数是完全独立变量,两者之间没有什么关系,向量的含义比 ...

  7. Python 编程训练2:二维向量

    目标 定义一个 Python 类名为 V2,用于表示二维向量,支持下列向量运算: 由两个实数创建一个二维向量:如:v = V2(1.1, 2.2) 将一个向量转换为字符串形式(使用__str__方法) ...

  8. 面向对象程序设计实践(C++)——二维向量

    目录 概述 实现 `Vec2D.h` `Vec2D.cpp` 测试 `Main.cpp` 运行情况 概述 设计一个类,实现对二维向量的存储及实现.其类中存储了向量的坐标,以及一些常见的操作. 实现 V ...

  9. 《UnityAPI.Vector2二维向量》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Vector2+Normalized+Lerp+Dot+立钻哥哥++OK++)

    <UnityAPI.Vector2二维向量> 版本 作者 参与者 完成日期 备注 UnityAPI_Vector2_V01_1.0 严立钻 2020.07.09 #<UnityAPI ...

最新文章

  1. STM32的IIC应用详解3
  2. 使用DOS命令找到占用80端口的程序,关闭该程序
  3. 将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目
  4. redis所有版本下载地址
  5. linux网络编程之通信协议格式
  6. python 串口助手 简书_python用pyserial读取串口问题解决
  7. Mysql for linux 安装
  8. 强大的DataGrid组件[12]_分组(Group)——Silverlight学习笔记[20]
  9. JavaScript学习笔记(三)——从简单模仿到创作
  10. PL/SQL学习笔记之存储过程
  11. Android Toast小解
  12. dialog下textarea滚动条不显示
  13. VBA自动创建数据透视表
  14. SAP HR 导出PA0185 身份证件信息
  15. 气体涡轮流量计和涡街流量计的区别
  16. 【JY】橡胶支座的简述和其力学性能计算
  17. 【毕业设计】基于STM32及OpenMV的云台追踪装置
  18. 深度学习应用13电影评论情感分析
  19. 常用键盘快捷键 键盘快捷键大全
  20. White Box Cartoonization 人工智能动画化0.0

热门文章

  1. boost::hana::max用法的测试程序
  2. boost::hana::list用法的测试程序
  3. GDCM:DICOM文件转储到Siemens Base64
  4. Boost:bind的noexcept成员函数的type <>语法的测试程序
  5. ITK:对图像进行升采样
  6. VTK:模型之MarchingSquares
  7. VTK:网格之TableBasedClipDataSetWithPolyData2
  8. VTK:图片之NegativeIndices
  9. OpenCV在G-API上移植各向异性图像分割
  10. C++Quick sort快速排序的实现算法之二(附完整源码)