用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& ...
随机推荐
- POJ 1187 陨石的秘密 (线性DP)
题意: 公元11380年,一颗巨大的陨石坠落在南极.于是,灾难降临了,地球上出现了一系列反常的现象.当人们焦急万分的时候,一支中国科学家组成的南极考察队赶到了出事地点.经过一番侦察,科学家们发现陨石上 ...
- 简单的jQuery前端验证码校验
简单的jQuery前端验证码校验2 html; <!DOCTYPE html> <html lang="zh-cn"> <head> <m ...
- Excel VBA连接MySql 数据库获取数据
编写Excel VBA工具,连接并操作Mysql 数据库. 系统环境: OS:Win7 64位 英文版 Office 2010 32位 英文版 1.VBA连接MySql前的准备 Tools---> ...
- 算法Sedgewick第四版-第1章基础-019一Scanner的用法
package algorithms.fundamentals001; import java.util.Locale; import java.util.Scanner; import algori ...
- Luogu 3586 [POI2015]LOG
考虑离散化后开权值线段树. 设序列中不小于$s$的数有$cnt$个,小于$s$的数的和为$sum$. 那么操作Z能成功的充要条件是$sum \geq (c - cnt) * s$. 如果序列中不小于$ ...
- 牛客网java基础题分类
http://www.cnblogs.com/tptptptp/p/5904075.html
- wordcount程序实现与测试
GitHub地址 https://github.com/jiaxuansun/wordcount PSP表格 PSP PSP阶段 预估耗时(分钟) 实际耗时(分钟) Planning 计划 10 5 ...
- 20169219 《Linux内核原理与分析》 第十周作业
进程地址空间 1.进程地址空间由进程可寻址的虚拟内存组成.Linux系统中的所有进程之间以虚拟方式共享内存. 2.进程只能访问有效内存区域内的内存地址. 内存区域可以包含各种内存对象: (1) 代码段 ...
- access + vb + asp 遇到一些问题的总结
Data Base access + vb + asp 遇到一些问题的总结 1.asp中sql语句: select * from users whre name=’张三‘ and addTime=# ...
- 手机APP测试
注:以下内容来自网络: 一.手机APP测试类型 1.1 接口协议测试 在APP客户端开发设计时,一般服务端会提供相应的接口协议文档,接口协议文档的质量,决定了APP的开发进度.此部分的测试,应首先检测 ...