用vector实现二维向量
如果一个向量的每一个元素是一个向量,则称为二维向量,例如
- vector<vector<int> >vv(3, vector<int>(4));//这里,两个“>”间的空格是不可少的
将构造一个二维向量vv,它含有三个元素,每个元素含有4个int型元素的向量。编译器两次调用vector的构造函数构造对象vv,第一次调用构造函数构造了一个无名的含有4个0的vector<int>对象:
| [0] | [1] | [2] | [3] |
| 0 | 0 | 0 | 0 |
第二次调用构造函数,以这个无名向量为初值初始化它的三个元素,结果是:
| vv | [0] | [1] | [2] | [3] |
| [0] | 0 | 0 | 0 | 0 |
| [1] | 0 | 0 | 0 | 0 |
| [2] | 0 | 0 | 0 | 0 |
vv[i]表示第i(i=0,1,2)行的元素组成的向量。vv.size()的值是3,vv[1].size()的值是4.
一个二维向量每个元素的长度可以不同,例如
- vector<vector<int> >vv;
- for(int c = 1; c <= 3; c++)
- vv.push_back(vector<int>(c,0));
上面代码产生一个长度不同的二维向量,第一行只有1个元素,第二行有两个,第三行三个。
应用例子:输入一个n个整数,将他们分别除以选定的一个整数(称为模),按余数将这些整数分组。
- #include <iostream>
- #include <vector>
- using namespace std;
- void classify(vector<int>& v,int mode, vector<vector<int> >& vv)
- {
- for (vector<int>::const_iterator iter = v.begin(); iter != v.end(); iter++)
- {
- int index = (*iter) % mode;//取余数
- vv[index].push_back(*iter);//插入元素
- }
- }
- int main()
- {
- int mode;//模
- cin>>mode;
- vector<vector<int> >vv(mode);//定义了一个有mode行的二维向量
- int n;//n个整数
- cin>>n;
- vector<int>v(n);//一维向量,保存n个整数
- for (int i = 0;i < n; i++)
- cin>>v[i];
- //开始分类
- classify(v,mode,vv);
- for (i = 0; i < mode; i++)
- {
- cout<<"余数是 "<<i<<":";
- if(vv[i].empty())
- cout<<endl;
- else
- {
- for (vector<int>::const_iterator p = vv[i].begin(); p != vv[i].end(); p++)
- cout<<*p<<" ";
- cout<<endl;
- }
- }
- return 0;
- }
运行结果:

用vector实现二维向量的更多相关文章
- [LeetCode] Flatten 2D Vector 压平二维向量
Implement an iterator to flatten a 2d vector. For example,Given 2d vector = [ [1,2], [3], [4,5,6] ] ...
- [LeetCode] 251. Flatten 2D Vector 压平二维向量
Implement an iterator to flatten a 2d vector. For example,Given 2d vector = [ [1,2], [3], [4,5,6] ] ...
- [VB.NET][C#]二维向量的基本运算
前言 在数学中,几何向量指具有大小(Magnitude)和方向的几何对象,它在线性代数中经由抽象化有着更一般的概念.向量在编程中也有着及其广泛的应用,其作用在图形编程和游戏物理引擎方面尤为突出. 基于 ...
- uda 3.C++二维向量
二维向量 接下来,你将使用向量来存储矩阵.就像 Python 使用列表列表来存储矩阵一样,C++ 使用的是向量的向量.用于声明二维向量的语法有点复杂. 假设你正在使用 Python,并且想存储一个 3 ...
- 【Unity3D】计算二维向量夹角(-180到180)
在Unity3D中,有时候我们需要计算二维向量的夹角.二维向量夹角一般在0~180度之前,可以直接调用Vector2.Angle(Vector2 from, Vector2 to)来计算. 但是在有些 ...
- vector作为二维数组
vector本来就是可以用来代替一维数组的,vector提供了operator[]函数,可以像数组一样的操作,而且还有边界检查,动态改变大小. 这里只介绍用它来代替二维的数组,二维以上的可以依此类推. ...
- C++ vector 实现二维数组时, 在类的头文件中定义时遇到"应输入类型符"的问题?
见下,当我在类的声明文件中定义二维vector时,提示我应输入类型说明符; 但是相同的格式定义,在类中将二维vector修改为在源文件中定义就可以顺利通过,并顺利执行打印 打印结果如下: 望大神来解惑 ...
- C++ vector 实现二维数组
在STL中Vector这一容器,无论是在封装程度还是内存管理等方面都由于传统C++中的数组.本文主要是关于使用Vector初始化.遍历方面的内容.其他二维的思想也是类似的. 这里简单叙述一下C++ 构 ...
- c++用vector创建二维数组
1 vector二维数组的创建和初始化 std::vector <int> vec(10,90); //将10个一维动态数组初始为90std::vector<std::vector& ...
随机推荐
- c语言学习笔记-变量、变量的命名、变量的赋值和变量的初始化
在学习了简单的输入输出功能和了解了一些基本的运算符号之后我们可以试着做一个非常简单的计算器. 比如说想计算23+65 输入以下代码就可以了. printf("23+65=%d",2 ...
- php学习笔记-超级全局变量
超级全局变量,超级在哪里呢?相对于global类型的变量,超级全局变量的作用域是没有限制的,函数外.函数内.随便一个PHP文件都可以引用超级全局变量.在PHP中有很多超级全局变量, 常用的有_SERV ...
- 1020C Elections
传送门 题目大意 现在有 n个人,m个党派,第i个人开始想把票投给党派pi,而如果想让他改变他的想法需要花费ci元.你现在是党派1,问你最少花多少钱使得你的党派得票数大于其它任意党派. 分析 我们枚举 ...
- Luogu 4552 [Poetize6] IncDec Sequence
在BZOJ上好像被权限掉了. 考虑差分,定义差分数组$b$ $$b_i = \left\{\begin{matrix} a_i \ \ \ (i == 1)\\ a_i - a_{i - 1}\ \ ...
- rest-framework组件 之 视图三部曲
浏览目录 使用混合(mixins) mixin类编写视图 使用通用的基于类的视图 viewsets.ModelViewSet 视图三部曲 使用混合(mixins) from rest_framewor ...
- input的on(‘input’,function(0{})事件
$('div[name="swlw"]').on('input',function(e){ function(){}; });
- .net中值类型、引用类型理解的c#代码示例
下面是以前在公司的时候给别人讲解值类型.引用类型时创建的c#代码示例,从实际使用时的角度出发,对于初学者还是很有帮助的.这里并没有深入讲解值类型包含引用类型成员时(如struct)在内存中的存放情况等 ...
- 基于.NET平台常用的框架整理[转载]
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就 ...
- 在Tomcat启动时直接创建servlet(二)
- C#中IDisposable的用法-垃圾回收
在Net中,由GC垃圾回收线程掌握对象资源的释放,程序员无法掌控析构函数的调用时机.对于一些非托管资源,比如数据库链接对象等,需要实现IDisposable接口进行手动的垃圾回收.那么什么时候使用Id ...