002.比较vector对象是否相等
1.使用vector模板
- //编写一段程序,比较vector对象是否相等
- //注:该例类似于一个【彩票游戏】
- #include <iostream>
- #include <ctime> //C++标准库,尾巴少了.h,头部多了c
- #include <cstdlib> //C++标准库,尾巴少了.h,头部多了c
- #include <vector>
- using namespace std;
- int main()
- {
- const int sz = ; //常量sz作为vector的容量
- vector<int> V1, V2;
- //生成随机数种子
- srand((unsigned)time(NULL));
- //通过for循环为数组元素赋值 (局部变量i,随用随定义)
- for (int i = ; i != sz; i++)
- {
- //每次循环生成一个3以内的随机数并添加到V1中
- V1.push_back(rand() % );
- }
- cout << "系统数据已经生成,请输入您猜测的3个数字(0~2),可重复:" << endl;
- int uVal;//用户输入值
- //while (cin >> uVal) {} 最好使用for,强制把控只能输入5个数,"cin>>uVal"依然可以用作判断条件
- for (int i = ; i != sz; i++)
- {
- if (cin >> uVal)
- V2.push_back(uVal);
- }
- cout << "系统生成的数据是:" << endl;
- for (auto val : V1)
- {
- cout << val << " ";
- }
- cout << endl;
- cout << "您猜测的数据是:" << endl;
- for (auto val : V2)
- {
- cout << val << " ";
- }
- cout << endl;
- //比较两者是否相等
- auto it1 = V1.cbegin(), it2 = V2.cbegin();//令p、q分别指向数组(向量)a和b的首指针
- //注:cbegin引用不能修改原vector向量中的元素,而begin引用可以
- while (it1 != V1.cend() && it2 != V2.cend())
- {
- if (*it1 != *it2)
- {
- cout << "您的猜测有误,两个数组不相等" << endl;//猜错提前结束
- return -;
- }
- ++it1;
- ++it2;
- }
- cout << "恭喜您全部猜对了!" << endl;
- return ;
- }
2.使用普通数组
- //编写一段程序,比较两个数组是否相等
- //注:该例类似于一个【彩票游戏】
- #include <iostream>
- #include <ctime> //C++标准库,尾巴少了.h,头部多了c
- #include <cstdlib> //C++标准库,尾巴少了.h,头部多了c
- using namespace std;
- int main()
- {
- //数组维度要先确定,首先需要比较维度是否相等,这里简化问题,
- //设定两个待比较数组的维度一致
- const int sz = ; //常量sz作为数组的维度
- int a[sz], b[sz];
- //生成随机数种子
- srand((unsigned)time(NULL));
- //通过for循环为数组元素赋值 (局部变量i,随用随定义)
- for (int i = ; i != sz; i++)
- {
- //每次循环生成一个10以内的随机数并添加到a中
- a[i] = rand() % ;
- }
- cout << "系统数据已经生成,请输入您猜测的5个数组(0~9),可重复:" << endl;
- int uVal;//用户输入值
- //while (cin >> uVal) {} 最好使用for,强制把控只能输入5个数,"cin>>uVal"依然可以用作判断条件
- for (int i = ; i != sz; i++)
- {
- if (cin >> uVal)
- b[i] = uVal;
- }
- cout << "系统生成的数据是:" << endl;
- for (auto val : a)
- {
- cout << val << " ";
- }
- cout << endl;
- cout << "您猜测的数据是:" << endl;
- for (auto val : b)
- {
- cout << val << " ";
- }
- cout << endl;
- //比较两者是否相等
- int *p = begin(a), *q = begin(b);//令p、q分别指向数组a和b的首指针
- while (p != end(a) && q != end(b))
- {
- if (*p != *q)
- {
- cout << "您的猜测有误,两个数组不相等" << endl;//猜错提前结束
- return -;
- }
- ++q;
- ++p;
- }
- cout << "恭喜您全部猜对了!" << endl;
- return ;
- }
参考资料:
1.《C++ Primer》中文版(第五版),Stanley B.Lippman等著,电子工业出版社
2.《C++ Primer》习题集(第五版),Stanley B.Lippman等著,电子工业出版社
002.比较vector对象是否相等的更多相关文章
- C++的vector对象
C++的vector使用 标签(空格分隔): C++ 标准库类型vector表示对象的集合,其中所有对象的类型都相同.集合中的每个对象都有一个与之对应的索引,索引用于访问对象,因为vector容纳着其 ...
- 用vector容器代替数组 ——使用数组初始化vector对象
在C++中,我们不能用数组直接初始化另一数组,而只能创建新的数组,然后显式的把原数组的元素逐个复制给新的数组. 按照C语言中的做法: const size_t arry_size=6; int int ...
- 整型数组与vector对象之间的相互初始化
#include<iostream> #include<vector> #include<string> using namespace std; int main ...
- 容器大小的改变以及容器操作可能使迭代器失效、vector对象的容量变化
1 改变容器的大小 我们可以使用resize来增加或缩小容器,与往常一样,array不支持resize.如果当前大小大于所要求的大小,容器后面的元素会被删除:如果当前大小小于新大小,会将新元素添加到容 ...
- vector 对象中存放指针类型数据
<<C++ Primer>> 第四版Exercise Section 5.6 的5.1.6 有一道题是这样的:编写程序定义一个vector对象,其每个元素都是指向string类 ...
- vector对象
vector是模板而非类型,由vector生成的类型必须包含vector中元素的类型,例如vector<int> 定义和初始化vector对象: vector<T> v1 ...
- 给vector对象添加元素的方法
#include<iostream> #include<vector> using namespace std; int main() { //初始化10个元素,每个值都为0 ...
- c++ vector对象
下面随笔讲解c++ vector对象. vector对象 为什么需要vector? 封装任何类型的动态数组,自动创建和删除. 数组下标越界检查. 封装的如ArrayOfPoints也提供了类似功能,但 ...
- DLL中传递STL参数,vector对象作为dll参数传递等问题(转)
STL跨平台调用会出现很多异常,你可以试试. STL使用模板生成,当我们使用模板的时候,每一个EXE,和DLL都在编译器产生了自己的代码,导致模板所使用的静态成员不同步,所以出现数据传递的各种问题,下 ...
随机推荐
- 【转】Haml 这货是啥? 附参考
Haml是一种用来描述任何XHTML web document的标记语言,它是干净,简单的.而且也不用内嵌代码.Haml的职能就是替代那些内嵌代码的page page templating syste ...
- Hadoop第二课:Hadoop集群环境配置
一.Yum配置 1.检查Yum是否安装 rpm -qa|grep yum 2.修改yum源,我使用的是163的镜像源(http://mirrors.163.com/),根据自己的系统选择源, #进入目 ...
- Linux 添加虚拟网卡
使用的Linux版本是Centos 7: [root@vnode33 bin]# cat /etc/redhat-release CentOS Linux release (Core) 使用ifcon ...
- UVALive 3668 A Funny Stone Game(博弈)
Description The funny stone game is coming. There are n piles of stones, numbered with 0, 1, 2,..., ...
- 关于localStorage的实际应用
在客户端存储数据 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前, ...
- 常用算法Java实现之选择排序
选择排序算法在每一步中选取最小值来重新排序,通过选择和交换来实现排序. 具体流程如下: 1.首先从原数组中选择最小的1个数据,将其置于第一个位置. 2.然后从剩下的数据中再选择其中最小的一个数据,并将 ...
- Spring Boot(四)@EnableXXX注解分析
在学习使用springboot过程中,我们经常碰到以@Enable开头的注解,其实早在Spring3中就已经出现了类似注解,比如@EnableTransactionManagement.@ Enabl ...
- Ubuntu下找不到php5,phpize等可执行程序的解决办法
Ubuntu下找不到php5,phpize等可执行程序的解决办法 [日期:2010-10-25] 来源:eetag.com 作者:eetag [字体:大 中 小] 环境:Linux Ubun ...
- JDK版本Java SE、Java EE、Java ME的区别
想在win7 X64上搭建JAVA开发环境来着(只是尝试下),打开JAVA 官网下载JDK,发现好多版本懵了,百度了下找到这些版本的区别,故有了下文 1.JAVA SE Java2平台标准版(Java ...
- Tiny4412 LED 程序
package cn.hyc.led; import android.os.Bundle; import android.app.Activity; import android.view.Menu; ...