如果一个向量的每一个元素是一个向量,则称为二维向量,例如

  1. 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.

一个二维向量每个元素的长度可以不同,例如

  1. vector<vector<int> >vv;
  2. for(int c = 1; c <= 3; c++)
  3. vv.push_back(vector<int>(c,0));

上面代码产生一个长度不同的二维向量,第一行只有1个元素,第二行有两个,第三行三个。

应用例子:输入一个n个整数,将他们分别除以选定的一个整数(称为模),按余数将这些整数分组。

  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. void classify(vector<int>& v,int mode, vector<vector<int> >& vv)
  5. {
  6. for (vector<int>::const_iterator iter = v.begin(); iter != v.end(); iter++)
  7. {
  8. int index = (*iter) % mode;//取余数
  9. vv[index].push_back(*iter);//插入元素
  10. }
  11. }
  12. int main()
  13. {
  14. int mode;//模
  15. cin>>mode;
  16. vector<vector<int> >vv(mode);//定义了一个有mode行的二维向量
  17. int n;//n个整数
  18. cin>>n;
  19. vector<int>v(n);//一维向量,保存n个整数
  20. for (int i = 0;i < n; i++)
  21. cin>>v[i];
  22. //开始分类
  23. classify(v,mode,vv);
  24. for (i = 0; i < mode; i++)
  25. {
  26. cout<<"余数是 "<<i<<":";
  27. if(vv[i].empty())
  28. cout<<endl;
  29. else
  30. {
  31. for (vector<int>::const_iterator p = vv[i].begin(); p != vv[i].end(); p++)
  32. cout<<*p<<" ";
  33. cout<<endl;
  34. }
  35. }
  36. return 0;
  37. }

运行结果:

用vector实现二维向量的更多相关文章

  1. [LeetCode] Flatten 2D Vector 压平二维向量

    Implement an iterator to flatten a 2d vector. For example,Given 2d vector = [ [1,2], [3], [4,5,6] ] ...

  2. [LeetCode] 251. Flatten 2D Vector 压平二维向量

    Implement an iterator to flatten a 2d vector. For example,Given 2d vector = [ [1,2], [3], [4,5,6] ] ...

  3. [VB.NET][C#]二维向量的基本运算

    前言 在数学中,几何向量指具有大小(Magnitude)和方向的几何对象,它在线性代数中经由抽象化有着更一般的概念.向量在编程中也有着及其广泛的应用,其作用在图形编程和游戏物理引擎方面尤为突出. 基于 ...

  4. uda 3.C++二维向量

    二维向量 接下来,你将使用向量来存储矩阵.就像 Python 使用列表列表来存储矩阵一样,C++ 使用的是向量的向量.用于声明二维向量的语法有点复杂. 假设你正在使用 Python,并且想存储一个 3 ...

  5. 【Unity3D】计算二维向量夹角(-180到180)

    在Unity3D中,有时候我们需要计算二维向量的夹角.二维向量夹角一般在0~180度之前,可以直接调用Vector2.Angle(Vector2 from, Vector2 to)来计算. 但是在有些 ...

  6. vector作为二维数组

    vector本来就是可以用来代替一维数组的,vector提供了operator[]函数,可以像数组一样的操作,而且还有边界检查,动态改变大小. 这里只介绍用它来代替二维的数组,二维以上的可以依此类推. ...

  7. C++ vector 实现二维数组时, 在类的头文件中定义时遇到"应输入类型符"的问题?

    见下,当我在类的声明文件中定义二维vector时,提示我应输入类型说明符; 但是相同的格式定义,在类中将二维vector修改为在源文件中定义就可以顺利通过,并顺利执行打印 打印结果如下: 望大神来解惑 ...

  8. C++ vector 实现二维数组

    在STL中Vector这一容器,无论是在封装程度还是内存管理等方面都由于传统C++中的数组.本文主要是关于使用Vector初始化.遍历方面的内容.其他二维的思想也是类似的. 这里简单叙述一下C++ 构 ...

  9. c++用vector创建二维数组

    1 vector二维数组的创建和初始化 std::vector <int> vec(10,90); //将10个一维动态数组初始为90std::vector<std::vector& ...

随机推荐

  1. cocos2d-js 定时器

    1.scheduleUpdate 节点中有scheduleUpdate接口,通过这个接口,可以让游戏在每帧执行都执行update方法 var ScheduleUpdateLayer = cc.Laye ...

  2. Luogu 2375 [NOI2014]动物园

    字胡串什么的一直不太会,感觉这题…还蛮本质的 考虑暴力求解:num[i]相当于从一直跳nxt,如果nxt[j] * 2 <= i 那么就累加答案 其实这是一个树的结构,也就是说跳到一个结点满足条 ...

  3. c/c++头文件中#ifndef/#define/#endif的用法

    想必很多人都看过“头文件中用到的 #ifndef/#define/#endif 来防止该头文件被重复引用”.但是是否能理解“被重复引用”是什么意思?头文件被重复引用了,会产生什么后果?是不是所有的头文 ...

  4. jquery ajax 分页

    <script src="../Js/jQuery/jquery-1.8.2.min.js" type="text/javascript">< ...

  5. [raspberry pi3] 安装aarch64 opensuse

    raspberry 虽然是64bit的cpu,但是用的系统一直都是32bit的,32bit的系统还是有不少的局限性的, 比如mongodb,Y2038. suse 发布了个64bit的server版本 ...

  6. C#socket通信时,怎样判断socket双方是否断开连接

    我在Server端new了一个socket,然后bind,开了一个线程来accept前来连接的client,每接到一个client前来连接就新开一个线程和它进行通信.我把Server端得到的socke ...

  7. ubuntu - 安装软件问题

    problem & solution 问题1 - E: 无法定位软件包 @原因(1) - 没有添加相应软件的镜像源(软件源)    解决方案 用 gedit/vi/vim - 在 /etc/a ...

  8. 深入浅出git

    图文 http://www.cnblogs.com/syp172654682/p/7689328.html 廖雪峰 https://www.liaoxuefeng.com/wiki/001373951 ...

  9. poj2406 Power Strings(kmp)

    poj2406 Power Strings(kmp) 给出一个字符串,问这个字符串是一个字符串重复几次.要求最大化重复次数. 若当前字符串为S,用kmp匹配'\0'+S和S即可. #include & ...

  10. flink学习笔记-快速生成Flink项目

    说明:本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKh ...