zoukankan      html  css  js  c++  java
  • offer-first

    题目要求:在一个二维数组中(每个一维数组的长度都相同),每一行按照从左向右递增的顺序排序,每一列按照从上到下递增的顺序排序请完成一个函数,输入一个这样的二维数组和一个整数,判断数组中是否含有该整数
    本文是以此为基础熟悉一些知识点

    1.在c++语言中根本就没有二维数组的数据结构的存在。二维数组是在逻辑上形成的。vector的的中文意译为“向量”,不妨可以理解为其中存储的每个对象都是向量,即使一个标量数据也可以理解为是一个只有一个元素的一维向量,或者按照tensorflow中张量的理解,将标量数据理解为零维向量。在c++中,多维数组可以理解为“数组的数组”,也就是数组的每个元素还是数组对象。

    2.在c++的vector容器中。

    //其中的int指的是容器中存储的元素的数据类型
    vector<int> array;
    //那么当我们存储二维数组的时候,创建的vector容器中
    //的每个元素又是一个vector容器,这个容器中存储的是int型元素,故有
    vector<vector<int>> array1;

    3.在vector的迭代器中。

    //其中的int指的是迭代器指向的元素数据类型
    vector<int>::iterator it1;
    //那么当我们存储二维数组的时候,创建的vector容器中
    //的每个元素又是一个vector容器,这个容器中存储的是int型元素。
    //那么当创建一个迭代器指向二维数组中的第一维元素时,
    //迭代器指向的元素应该为vector<int>
    vector<vector<int>>::iterator it2;

    最终代码

    #include<iostream>
    #include<vector>
    
    using namespace std;
    
    //查找二维数组中是否含有某个数的函数
    bool find(int target, vector<vector<int>> array )
    {
        bool flag = false;
        for (vector<vector<int>>::iterator i = array.begin(); i != array.end(); i++)
        {
            for (vector<int>::iterator j = (*i).begin(); j != (*i).end(); j++)
            {
                if (target == *j)
                {
                    flag = true;
                    break;
                }
            }
        }
        return flag;
    }
    
    int main ()
    {
        //构造一个二维数组
        int row_num, cow_num;
        cout << "请输入行数:" << endl;
        cin >> row_num;
        cout << "请输入列数" << endl;
        cin >> cow_num;
    
        //构造二维vector对象。
        //每个vector位置存储的是vector<int>型
        vector<vector<int>> array;
    
        //想vector中添加空行,
        //要使用一个vector容器创建一个二维数组,那么首先将创建的vector容器的第一维元素都用vector容器对象填充
        for (int i = 0; i < row_num; i++)
        {
            array.push_back(vector<int>());
        }
    
        for (int i = 0; i < array.size(); i++)
        {
            for (int j = 0; j < cow_num; j++)
            {
                cout << "请输入第" << i << "行第" << j << "列的元素:" << endl;
                int num = 0;
                cin >> num;
                array[i].push_back(num);
            }
    
        }
        
        //在第一个for循环中,由于每一列vector容器中存储的是vector<int>对象,所以迭代器的指向类型要设置为vector<int>型
        for (vector<vector<int>>::iterator i = array.begin(); i != array.end(); i++)
        {
            for (vector<int>::iterator j = (*i).begin(); j != (*i).end(); j++)
            {
                cout << *j << endl;
            }
    
        }
        cout << find(100, array) << endl;;
    };
  • 相关阅读:
    浅谈FastJson的TypeReference用法
    勾选表中的行数据,点击添加,添加到另一个表中(二)
    获取表单内的所有元素的值 表单格式化插件jquery.serializeJSON
    基于BootStrap的Collapse折叠(包含回显展开折叠的对应状态)
    删除按钮和单条删除合并
    前台校验是否为空
    浅谈js的join()方法
    select前台转义后台取到的值为对应的文本 select同时接受list和map
    SpringBoot图片上传(二)
    给div拼接html 拼接字符串
  • 原文地址:https://www.cnblogs.com/hxhlrq/p/12673520.html
Copyright © 2011-2022 走看看