一、vector常见用法详解
- 如果typename是一个STL容器,定义的时候要记得在>>符号之间加上空格,因为在C++11之前标准的编译器会把他当成位移操作。vector<vector > name;
- vector Arrayname[arrySize]和vector<vector > name不一样,其中定义为数组的即第一个中每个都是一个vector容器,一维长度已经固定为arrySize的大小。
- vector元素访问有两种方式,一种是通过下标,还有一种是通过迭代器,通过下标访问和普通数组是一样的操作,重点是通过迭代器访问,vector::iterator it;可以把迭代器理解成像指针一样的东西,通过*it可以访问vector里面的内容。在C++11中特别是在for循环中可以写成auto it
- v[i]和*(v.begin()+i)是等价的
- 左闭右开记住这个思想
- 迭代器中还实现了两种自加操作:++it和it++(自减同理)迭代器支持it < v.end()因此循环条件一般使用it != v.end()
- 在常用STL容器中,只有vector和string中才允许使用v.begin()+i这种迭代器上加数字的写法。
常用函数:
- push_back()就是在vector后添加一个元素,时间复杂度为O(1)
- pop_back()就是在vector末尾删除一个元素,时间复杂度为O(1)
- size()用来获得vector中元素的个数,时间复杂度为O(1),size返回的是unsigned类型,这一点对所有的STL都是一样的。
- clear()用来清空vector中所有的元素
- insert(it, x)用来向vector的任意迭代器it处插入一个元素x,时间复杂度为O(N)
- erase()有两种用法删除单个元素,删除一个区间内的所有元素,时间复杂度均为O(N),erase(it)删除迭代器为it位置处的元素;erase(first, last)例如erase(v.begin(), v.begin()+i),左闭右开。
常见用法:
- 存储数据本身可以作为数组使用
- 用邻接表存储图
日常笔记6C++标准模板库(STL)介绍
原文:https://www.cnblogs.com/tsruixi/p/11890525.html