C++中vector容器的几种用法

就是之前转载过几篇文章是关于vector容器的,但是感觉记忆并不是太深刻,今天想自己来总结一下vector容器的几种用法

首先,自我感觉,vector容器就是一个动态的数组,它可以像平常数组一样随机访问元素,但是它也可以随机的插入和删除元素(当然这里的删除不是绝对的删除,在内部一定还是跟我们C中插入元素一样一步一步移动然后插入和删除,感觉这里只是将那些步骤封装起来,然后将其放入到vector头文件中),动态的调整内存,操作简单高效,完全可以代替数组,不废话了,直接说功能吧

1.创建vector对象

常用的不定义容器大小,以int为例的话,就是vector<int>v;

定义容器大小的话,就是,vector<int>v(10),定义一个长度为10的容器

以上两种的系统初始化都为0,想赋值的话可以这么定义,vector<int>v(10,5)表示为,定义一个长度为10的,容器中元素都为5的vector容器

之前还用过迭代器存邻接表,这个时候就需要vector<int>s[10010];这样定义了,相当于一个二维数组

2.迭代器

我自己感觉迭代器就相当于一个指针,具体也不知道怎么说,但是说下定义以及使用吧

定义:vector<int>::interator it;//定义了一个迭代器,名为it

使用:比如想遍历容器,就不用知道长度也可以

for(int it=v.begin();it!=v.end();it++)

printf("%d\n",*it);

3. 尾部元素扩张

通常用push_back()方法对vector容器进行追加新元素,此时,vector容器会自动分配内存(这点就是vector容器的好处了),可对空的容器进行扩张,也可以对已有元素的容器进行扩张

vector<int>v;

v.push_back(5);//在vector容器的尾部插入5

4.访问vector元素

(1)用下表方式访问vector元素

这点跟数组一样,都是从0开始的访问的,比如

vector<int>v;

v[0]=2;//表示给vector容器中的第一个元素赋值为2;

(2)用迭代器访问vector元素

首先定义一个迭代器it,访问的话就是*it(这点正好跟指针很像,所以我说觉得像指针)

5.元素的插入

insert()方法可以在vector对象的任意位置前插入一个元素,同时vector自动扩展一个空间,插入位置后的所有元素都会依次向后移一位,,要注意的是,insert方法要求插入的元素的位置,是迭代器的位置,而不是元素的下标

v.insert(v.begin(),8);//在最前边插入8

6.元素的删除

有两种方法,一种是erase,一种是clear,erase可以删除vector中迭代器所指向的一个元素,也可以删除一段区间的所有元素,clear则可以一次性的删除vector中的所有元素

v.erase(v.begin()+2);//表示删除第2个元素(从0开始计数)

v.erase(v.begin()+1,v.begin()+5);//删除第1个到第区间所有的元素

v.clear();//清除容器内所有的元素

7.使用reverse反向排列

reverse(v.begin,v.end);//表示反向从首到尾的元素

8.可以用sort,因为容器相当于一个数组,所以感觉数组可以用的,该容器都可以用

9.向量大小

v.size();//返回向量的长度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值