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等著,电子工业出版社

posted @ 2018-11-18 20:19  Timothy_prayer  阅读(3274)  评论(0编辑  收藏  举报