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都在编译器产生了自己的代码,导致模板所使用的静态成员不同步,所以出现数据传递的各种问题,下 ...
随机推荐
- day-20 tensorflow持久化之入门学习
如果不对模型参数进行保存,当训练结束以后,模型也在内存中被释放,下一轮又需要对模型进行重新训练,有没有一种方法,可以利用之前已经训练好的模型参数值,直接进行模型推理或者继续训练?这里需要引入一个数据之 ...
- qt qchart缩放后坐标轴间隔取整
使用qt的qchart显示数据曲线,坐标轴QValueAxis可以设置刻度间隔数量,但每个刻度的数值是根据坐标的极值除以间隔数量得到的,不一定是整数,导致曲线控件的显示刻度不适合观察. 如图: 纵坐标 ...
- 科普:PCI-E插槽都有哪些样子?
主板上的扩展插槽曾经是多种多样的,例如曾经非常流行的组合就是PCI插槽搭配AGP插槽,其中AGP插槽主要用在显卡上,而PCI插槽的用途则更广一些,不仅有用在显卡上,还能用于扩展其它设备,如网卡.声卡. ...
- Python中的namespace package
在Python 3.3之前,一个目录想被当成package被导入,必须包含__init__.py文件:而在Python 3.3及以后的版本中,__init__.py文件可以不需要,直接使用import ...
- JavaScript初探系列之基本概念
JavaScript的核心语言特性在ECMA-262中是以名为ECMAScript(ECMA, EuropeanComputer Manufacturers Association )的伪语言的形式来 ...
- UVALive - 6864 Strange Antennas 扫描线
题目链接: http://acm.hust.edu.cn/vjudge/problem/87213 Strange Antennas Time Limit: 3000MS 题意 一个雷达能够辐射到的范 ...
- QT分析之QPushButton的初始化
原文地址:http://blog.163.com/net_worm/blog/static/127702419201001003326522/ 在简单的QT程序的第二行,声明了一个QPushButto ...
- Thread.Sleep(0)
理解Thread.Sleep函数 我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间.那么你有没有正确的理解这个函数的用法呢? 思考下面这两个问题: 1.假设现在是 2008-4- ...
- [STL] 如何将一个vector赋给另一个vector
vector 有个函数assign, 可以帮助执行赋值操作. assign会清空你的容器. assign函数: 函数原型: void assign(const_iterator first,const ...
- Qt——树结点的搜索
一.Qt中的树 平时我们经常使用树的结构来组织和展示数据,比如文件系统等—— 在Qt中,我们可以使用Qt提供的便捷的QTreeWidget类,利用该类的接口,轻松地将已有数据显示在树中. 除此之外,还 ...