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 = 3; //常量sz作为vector的容量 vector<int> V1, V2; //生成随机数种子 srand((unsigned)time(NULL)); //通过for循环为数组元素赋值 (局部变量i,随用随定义) for (int i = 0; i != sz; i++) { //每次循环生成一个3以内的随机数并添加到V1中 V1.push_back(rand() % 3); } cout << "系统数据已经生成,请输入您猜测的3个数字(0~2),可重复:" << endl; int uVal;//用户输入值 //while (cin >> uVal) {} 最好使用for,强制把控只能输入5个数,"cin>>uVal"依然可以用作判断条件 for (int i = 0; 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 -1; } ++it1; ++it2; } cout << "恭喜您全部猜对了!" << endl; return 0; }
2.使用普通数组
//编写一段程序,比较两个数组是否相等 //注:该例类似于一个【彩票游戏】 #include <iostream> #include <ctime> //C++标准库,尾巴少了.h,头部多了c #include <cstdlib> //C++标准库,尾巴少了.h,头部多了c using namespace std; int main() { //数组维度要先确定,首先需要比较维度是否相等,这里简化问题, //设定两个待比较数组的维度一致 const int sz = 5; //常量sz作为数组的维度 int a[sz], b[sz]; //生成随机数种子 srand((unsigned)time(NULL)); //通过for循环为数组元素赋值 (局部变量i,随用随定义) for (int i = 0; i != sz; i++) { //每次循环生成一个10以内的随机数并添加到a中 a[i] = rand() % 10; } cout << "系统数据已经生成,请输入您猜测的5个数组(0~9),可重复:" << endl; int uVal;//用户输入值 //while (cin >> uVal) {} 最好使用for,强制把控只能输入5个数,"cin>>uVal"依然可以用作判断条件 for (int i = 0; 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 -1; } ++q; ++p; } cout << "恭喜您全部猜对了!" << endl; return 0; }
参考资料:
1.《C++ Primer》中文版(第五版),Stanley B.Lippman等著,电子工业出版社
2.《C++ Primer》习题集(第五版),Stanley B.Lippman等著,电子工业出版社