第一次的CSDN博客~

第一次博客~ 简单介绍一下最近的vector使用

STL中最常用的容器为Vector,可以理解为数组,下面我们将学习如何向这个容器中插入数据、并遍历这个容器

按照C++primer书上所言,严格来说,C++中并没有多维数组,所谓的多维数组是 数组的数组 。这一点,需要谨记。

在LeetCode118_杨辉三角中,有很好的体现,因为杨辉三角是一个二维数组(其先定义numRows个数的数组,每个numsRows是一个i+1的数组)

vector<vector<int>> res(numRows);   //定义一个numRows行的二维数组
        for(int i =0; i<numRows; i++)
            res[i].resize(i+1, 1); //设置大小(size)为i+1个,每个元素都为1;
下面的代码和上面功能完全一致,但是先定义了一个二维数组,然后在每一行push_back(i+1个值为1的元素组成的一位数组)
  vector<vector<int>> res;  //和上面很像,就是这里写的是res而不是res(numsRows)
        for(int i =0; i<numRows; i++){
            res.push_back(vector<int>(i+1,1));  //这句话的意思是 :res.push_back一个一维数组 进去
            }

回到正题,对于vector的使用 结合自己常用的一些简单操作,放在这里:

1. vector初始化:

方式1.
//定义具有10个整型元素的向量(尖括号为元素类型名,它可以是任何合法的数据类型),不具有初值,其值不确定
vector<int>a(10);
方式2.
//定义具有10个整型元素的向量,且给出的每个元素初值为1
vector<int>a(10,1);
方式3.
//用向量b给向量a赋值,a的值完全等价于b的值
vector<int>a(b);
方式4.
//将向量b中从0-2(共三个)的元素赋值给a,a的类型为int型
vector<int>a(b.begin(),b.begin+3);
方式5.
 //从数组中获得初值
int b[7]={1,2,3,4,5,6,7};
vector<int> a(b,b+7;

2. vector的常见函数

下面是很常见的,这里列出来为了自己复习用。

a.back();
//返回a的第一个元素
a.front();
//返回a的第i元素,当且仅当a存在
a[i];
//清空a中的元素
a.clear();
//判断a是否为空,空则返回true,非空则返回false
a.empty();
//删除a向量的最后一个元素
a.pop_back();
//删除a中第一个(从第0个算起)到第二个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+3(不包括它)结束
a.erase(a.begin()+1,a.begin()+3);
//在a的最后一个向量后插入一个元素,其值为5
a.push_back(5);
//在a的第一个元素(从第0个算起)位置插入数值5,
a.insert(a.begin()+1,5);
//在a的第一个元素(从第0个算起)位置插入3个数,其值都为5
a.insert(a.begin()+1,3,5);
//b为数组,在a的第一个元素(从第0个元素算起)的位置插入b的第三个元素到第5个元素(不包括b+6)
a.insert(a.begin()+1,b+3,b+6);
//返回a中元素的个数
a.size();
//返回a在内存中总共可以容纳的元素个数
a.capacity();
//将a的现有元素个数调整至10个,多则删,少则补,其值随机
a.resize(10);
//将a的现有元素个数调整至10个,多则删,少则补,其值为2
a.resize(10,2);

3. vector的遍历

vector是顺序容器,一般来说就直接i++这种就行了 但是其也有迭代器,大概的写法是这样的:

 for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
        cout << *it << endl;
    }//容器的通用迭代方式

注:本人发博客首先是为了整理记录自己的知识点,肯定会有很多疏漏之处,望各位多多批评指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值