1.使用vector模板

  1. //编写一段程序,比较vector对象是否相等
  2. //注:该例类似于一个【彩票游戏】
  3.  
  4. #include <iostream>
  5. #include <ctime> //C++标准库,尾巴少了.h,头部多了c
  6. #include <cstdlib> //C++标准库,尾巴少了.h,头部多了c
  7. #include <vector>
  8.  
  9. using namespace std;
  10.  
  11. int main()
  12. {
  13. const int sz = ; //常量sz作为vector的容量
  14. vector<int> V1, V2;
  15.  
  16. //生成随机数种子
  17. srand((unsigned)time(NULL));
  18.  
  19. //通过for循环为数组元素赋值 (局部变量i,随用随定义)
  20. for (int i = ; i != sz; i++)
  21. {
  22. //每次循环生成一个3以内的随机数并添加到V1中
  23. V1.push_back(rand() % );
  24. }
  25.  
  26. cout << "系统数据已经生成,请输入您猜测的3个数字(0~2),可重复:" << endl;
  27.  
  28. int uVal;//用户输入值
  29.  
  30. //while (cin >> uVal) {} 最好使用for,强制把控只能输入5个数,"cin>>uVal"依然可以用作判断条件
  31. for (int i = ; i != sz; i++)
  32. {
  33. if (cin >> uVal)
  34. V2.push_back(uVal);
  35. }
  36. cout << "系统生成的数据是:" << endl;
  37. for (auto val : V1)
  38. {
  39. cout << val << " ";
  40. }
  41. cout << endl;
  42.  
  43. cout << "您猜测的数据是:" << endl;
  44. for (auto val : V2)
  45. {
  46. cout << val << " ";
  47. }
  48. cout << endl;
  49.  
  50. //比较两者是否相等
  51. auto it1 = V1.cbegin(), it2 = V2.cbegin();//令p、q分别指向数组(向量)a和b的首指针
  52. //注:cbegin引用不能修改原vector向量中的元素,而begin引用可以
  53.  
  54. while (it1 != V1.cend() && it2 != V2.cend())
  55. {
  56. if (*it1 != *it2)
  57. {
  58. cout << "您的猜测有误,两个数组不相等" << endl;//猜错提前结束
  59. return -;
  60. }
  61. ++it1;
  62. ++it2;
  63. }
  64. cout << "恭喜您全部猜对了!" << endl;
  65. return ;
  66. }

2.使用普通数组

  1. //编写一段程序,比较两个数组是否相等
  2. //注:该例类似于一个【彩票游戏】
  3.  
  4. #include <iostream>
  5. #include <ctime> //C++标准库,尾巴少了.h,头部多了c
  6. #include <cstdlib> //C++标准库,尾巴少了.h,头部多了c
  7.  
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12. //数组维度要先确定,首先需要比较维度是否相等,这里简化问题,
  13. //设定两个待比较数组的维度一致
  14.  
  15. const int sz = ; //常量sz作为数组的维度
  16. int a[sz], b[sz];
  17.  
  18. //生成随机数种子
  19. srand((unsigned)time(NULL));
  20.  
  21. //通过for循环为数组元素赋值 (局部变量i,随用随定义)
  22. for (int i = ; i != sz; i++)
  23. {
  24. //每次循环生成一个10以内的随机数并添加到a中
  25. a[i] = rand() % ;
  26. }
  27. cout << "系统数据已经生成,请输入您猜测的5个数组(0~9),可重复:" << endl;
  28.  
  29. int uVal;//用户输入值
  30.  
  31. //while (cin >> uVal) {} 最好使用for,强制把控只能输入5个数,"cin>>uVal"依然可以用作判断条件
  32. for (int i = ; i != sz; i++)
  33. {
  34. if (cin >> uVal)
  35. b[i] = uVal;
  36. }
  37. cout << "系统生成的数据是:" << endl;
  38. for (auto val : a)
  39. {
  40. cout << val << " ";
  41. }
  42. cout << endl;
  43.  
  44. cout << "您猜测的数据是:" << endl;
  45. for (auto val : b)
  46. {
  47. cout << val << " ";
  48. }
  49. cout << endl;
  50.  
  51. //比较两者是否相等
  52. int *p = begin(a), *q = begin(b);//令p、q分别指向数组a和b的首指针
  53. while (p != end(a) && q != end(b))
  54. {
  55. if (*p != *q)
  56. {
  57. cout << "您的猜测有误,两个数组不相等" << endl;//猜错提前结束
  58. return -;
  59. }
  60. ++q;
  61. ++p;
  62. }
  63. cout << "恭喜您全部猜对了!" << endl;
  64. return ;
  65. }

参考资料:

1.《C++ Primer》中文版(第五版),Stanley B.Lippman等著,电子工业出版社

2.《C++ Primer》习题集(第五版),Stanley B.Lippman等著,电子工业出版社

002.比较vector对象是否相等的更多相关文章

  1. C++的vector对象

    C++的vector使用 标签(空格分隔): C++ 标准库类型vector表示对象的集合,其中所有对象的类型都相同.集合中的每个对象都有一个与之对应的索引,索引用于访问对象,因为vector容纳着其 ...

  2. 用vector容器代替数组 ——使用数组初始化vector对象

    在C++中,我们不能用数组直接初始化另一数组,而只能创建新的数组,然后显式的把原数组的元素逐个复制给新的数组. 按照C语言中的做法: const size_t arry_size=6; int int ...

  3. 整型数组与vector对象之间的相互初始化

    #include<iostream> #include<vector> #include<string> using namespace std; int main ...

  4. 容器大小的改变以及容器操作可能使迭代器失效、vector对象的容量变化

    1 改变容器的大小 我们可以使用resize来增加或缩小容器,与往常一样,array不支持resize.如果当前大小大于所要求的大小,容器后面的元素会被删除:如果当前大小小于新大小,会将新元素添加到容 ...

  5. vector 对象中存放指针类型数据

    <<C++ Primer>> 第四版Exercise Section 5.6 的5.1.6 有一道题是这样的:编写程序定义一个vector对象,其每个元素都是指向string类 ...

  6. vector对象

    vector是模板而非类型,由vector生成的类型必须包含vector中元素的类型,例如vector<int> 定义和初始化vector对象: vector<T> v1    ...

  7. 给vector对象添加元素的方法

    #include<iostream> #include<vector> using namespace std; int main() { //初始化10个元素,每个值都为0 ...

  8. c++ vector对象

    下面随笔讲解c++ vector对象. vector对象 为什么需要vector? 封装任何类型的动态数组,自动创建和删除. 数组下标越界检查. 封装的如ArrayOfPoints也提供了类似功能,但 ...

  9. DLL中传递STL参数,vector对象作为dll参数传递等问题(转)

    STL跨平台调用会出现很多异常,你可以试试. STL使用模板生成,当我们使用模板的时候,每一个EXE,和DLL都在编译器产生了自己的代码,导致模板所使用的静态成员不同步,所以出现数据传递的各种问题,下 ...

随机推荐

  1. 【转】Haml 这货是啥? 附参考

    Haml是一种用来描述任何XHTML web document的标记语言,它是干净,简单的.而且也不用内嵌代码.Haml的职能就是替代那些内嵌代码的page page templating syste ...

  2. Hadoop第二课:Hadoop集群环境配置

    一.Yum配置 1.检查Yum是否安装 rpm -qa|grep yum 2.修改yum源,我使用的是163的镜像源(http://mirrors.163.com/),根据自己的系统选择源, #进入目 ...

  3. Linux 添加虚拟网卡

    使用的Linux版本是Centos 7: [root@vnode33 bin]# cat /etc/redhat-release CentOS Linux release (Core) 使用ifcon ...

  4. UVALive 3668 A Funny Stone Game(博弈)

    Description The funny stone game is coming. There are n piles of stones, numbered with 0, 1, 2,...,  ...

  5. 关于localStorage的实际应用

    在客户端存储数据 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前, ...

  6. 常用算法Java实现之选择排序

    选择排序算法在每一步中选取最小值来重新排序,通过选择和交换来实现排序. 具体流程如下: 1.首先从原数组中选择最小的1个数据,将其置于第一个位置. 2.然后从剩下的数据中再选择其中最小的一个数据,并将 ...

  7. Spring Boot(四)@EnableXXX注解分析

    在学习使用springboot过程中,我们经常碰到以@Enable开头的注解,其实早在Spring3中就已经出现了类似注解,比如@EnableTransactionManagement.@ Enabl ...

  8. Ubuntu下找不到php5,phpize等可执行程序的解决办法

    Ubuntu下找不到php5,phpize等可执行程序的解决办法 [日期:2010-10-25] 来源:eetag.com  作者:eetag [字体:大 中 小]     环境:Linux Ubun ...

  9. JDK版本Java SE、Java EE、Java ME的区别

    想在win7 X64上搭建JAVA开发环境来着(只是尝试下),打开JAVA 官网下载JDK,发现好多版本懵了,百度了下找到这些版本的区别,故有了下文 1.JAVA SE Java2平台标准版(Java ...

  10. Tiny4412 LED 程序

    package cn.hyc.led; import android.os.Bundle; import android.app.Activity; import android.view.Menu; ...