C++ | vector的初始化和使用
发布日期:2021-07-25 15:44:05 浏览次数:10 分类:技术文章

本文共 2381 字,大约阅读时间需要 7 分钟。

STL | vector的初始化和使用

  • vector指向量,可以理解为“变长数组”,长度根据需要而自动改变的数组。有时会碰到普通数组会超过内存的情况,可以使用vector解决。
  • 而且,vector可以用来以邻接表的方式存储图,可以解决当节点数太多,无法使用邻接矩阵,又害怕使用指针实现邻接表的时候,使用很简单。

01 vector的初始化

1⃣️ 默认初始化
vector
ilist1;
  • vector为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。
  • 这种初始化方式适用于元素个数未知,需要在程序中动态添加的情况。
二维数组的定义
vector
> name;vector
Arrayname[arraySize];//区别是第二种的一维长度事先固定了。
2⃣️ 通过同类型的vector进行初始化
vector
ilist2(ilist); vector
ilist2 = ilist;
  • 这两种方式等价 ,ilist2 初始化为ilist的拷贝,ilist必须与ilist2 类型相同,也就是同为intvector类型,ilist2将具有和ilist相同的容量和元素。
3⃣️ 通过迭代器进行初始化
vector
ilist3(ilist.begin()+2,ilist.end()-1);
  • ilist3初始化为两个迭代器指定范围中元素的拷贝,范围中的元素类型必须与ilist3 的元素类型相容,在本例中ilist3被初始化为{3,4,5,6}。
  • 这种初始化方法特别适合于获取一个序列的子序列。
4⃣️ 带参数的构造函数初始化
vector
ilist4(7);
  • 默认值初始化,ilist4中将包含7个元素,每个元素进行缺省的值初始化,对于int,也就是被赋值为0,因此ilist4被初始化为包含7个0。
  • 当程序运行初期元素大致数量可预知,而元素的值需要动态获取的时候,可采用这种初始化方式。
5⃣️ 带参数的构造函数初始化
vector
ilist5(7,3);
  • 指定值初始化,ilist5被初始化为包含7个值为3的int
6⃣️ 通过数组地址初始化
int a[5]={1,2,3,4,5}vector
vec_i(a,a+5);

02 vector的使用

#include
vector
arr;arr.push_back(9);//在arr结尾插入数字9arr.pop_back();//删除arr末尾最后一个项arr.front();//arr的第一个项的值arr.back();//arr的最后一个项的值arr.begin();//arr的第一个项的指针arr.end();//arr的最后一个项的指针arr.size();//arr的实际长度arr.erase(arr.begin(),arr.end());//删除从arr的第一个到最后一个项arr.insert(arr.begin(),5);//在arr的头之前插入数字5arr.insert(arr.begin(),6,5);//在arr的头之前插入6个5arr.empty();//判断arr是否为空arr.clear();//将arr清空

#include
sort(arr.begin(),arr.end());//对vector排序stable_sort(arr.begin(),arr.end());//对vector稳定排序reverse(arr.begin(),arr.end());//反转vectorvector
::iterator newend = unique(arr.begin(),arr.end());//对arr去重,并把去重后的实际个数存在迭代器newend里面arr.erase(newend,arr.end());//把从newend到arr最后一项(即重复的数字)去除ces

测试代码

#include
#include
#include
using namespace std;int main(){ cout<<"Vector functions:"<
arr; arr.push_back(9); arr.push_back(3); arr.push_back(5); arr.push_back(5); arr.push_back(7); arr.push_back(5); arr.push_back(3); arr.push_back(4); arr.push_back(2); arr.push_back(1); cout<<"arr.push_back() : "; for(int i = 0;i
::iterator oldend = arr.end(); vector
::iterator newend; newend = unique(arr.begin(),arr.end()); arr.erase(newend,oldend); cout<<"unique():"; for(int i = 0;i

转载地址:https://blog.csdn.net/qq_34170700/article/details/104090375 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:阅读 | 《逻辑工作法》学习笔记
下一篇:学习笔记 | Ch11 使用子查询 subquery

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月01日 16时51分22秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章