[转载]C++二维容器vector的使用及一个经典案例

vector(容器)的调用及初始化

C++使用vector前需要调用其头文件,为了方便最好还要使用命名空间,输入如下:

#include<vector>
using std::vector;

   
   
  • 1
  • 2

需要注意的是,vector不能容纳对象引用作为其元素,因为引用不是一个对象。在C++11中,二维容器的定义式可以写成vector<vector< int >>

定义和初始化vector对象主要表中几种方式:

代码表达式中文解释
vector< T > v1v1是一个空vector,它的潜在元素是T类型,执行默认初始化
vector< T > v2(v1)v2是包含v1的全部元素的副本
vector< T > v2=v1等价于v2(v1)
vector< T > v3(n,val)v3包含n个重复的元素,且每个元素都是val
vector< T > v4(n)v4中包含n个重复的默认初始化的元素
vector< T > v5{a,b,c,…}v5用列表进行初始化,元素的值即为列表内的值,注意为花括号
vector< T > v5={a,b,c,…}等价于v5{a,b,c,…}

二维vector的插入元素

二维vector插入元素的方式很多,有一种插入格式与其他语言中数组的插入方式非常相似,其代码如下:

vector<vector<int>> array;
    for (int i = 0; i < 5; i++)
    {
        array.push_back(vector<int>());//不断往v2d里加行 
    }
    for (int i = 0; i < array.size(); i++)//行 
    {
        for (int j = 0; j < 5; j++)//添加5列 
        {
            array[i].push_back(i + j);
        }
    }
    for (int i = 0; i < array.size(); i++)
    {
        for (int j = 0; j < 5; j++)
        {
            cout << array[i][j] << " ";//使用下标访问 
        }
        cout << endl;
    }

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

先使用push_back()在二维vectorA中插入五个vectorB元素,再在vectorB中插入五个int型元素。代码运行结果如下:

0 1 2 3 4
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8

   
   
  • 1
  • 2
  • 3
  • 4
  • 5

经典案例—查找某元素target是否存在二维数组vector中

题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。对应代码如下:

bool Find(int target, vector<vector<int> > array) {
        int row=array.size();
        int col=array[0].size();
        int i=row-1;
        int j=0;
        while(i>=0&&j<col)
        {
            if(target==array[i][j])
                return true;
            else if(target<array[i][j])
                i--;
            else
                j++;
        }
        return false;
    }

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

补充一点,在类中使用二维Vector可以直接在构造函数中初始化为row个空一维vector,就不用手动再push_back了:
构造函数中初始化二维vector

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值