时间:2021-05-20
一、特点
①总的来说:可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢
②元素保存在连续的内存空间中,因此通过下标取值非常快
③在容器中间位置添加或删除元素非常耗时
④一旦内从重分配,和原vector相关的指针,引用,迭代器都失效。内存重分配耗时很长
二、头文件、using声明
三、初始化
四、相关操作
1.运算符
v1==v2;//判断v1和v2是否相等v1!=v2;//判断v1和v2是否相等>、>=、<、<= //以字典顺序进行比较2.取值
索引取值:v[0],v[1],v[2]....
五、相关函数
vector不支持push_front()和emplace_front()
v.empty();//判断是否为空,返回布尔值v.size();//返回容器中的元素个数v.max_size();//返回容器的容量v.front();//得到头元素v.back();//得到尾元素v.at(int i);//得到下标i处的元素,若下标越界,会抛出异常v1.swap(v2);//将v1和v2进行交换。容器的成员函数版本swap(v1,v2);//同上。系统函数版本 assign(iter1,iter2);//将容器元素更换为一个迭代器的区间元素assign(n,t);//将容器元素变为n个t元素v.insert(iter,t);//在迭代器iter处插入t。返回所插位置处的迭代器v.insert(v.end(),10,t);//在容器v的末尾插入10个元素,每个元素都是t。返回新添加元素的第一个元素的迭代器v.insert(v.end(),{"a","b"...});//将后面花括号的每个元素插入容器v的尾部。返回新添加元素的第一个元素的迭代器v.insert(v.begin(),v2.end()-2,v2.end());//将容器v2的最后两个元素插入容器v的头部。返回新添加元素的第一个元素的迭代器注意:上面这个用法,后面两个参数不能为自身容器的范围(v.insert(v.begin(),v.end()-2,v.end());是错误的) //利用insert的返回值,下面代码为一直在lst容器的头部插入元素(类似于push_front的功能)vector<string> v;auto iter=lst.begin();while(cin>> word) iter=v.insert(iter,word);//insert函数每回执行完,返回容器的首元素位置//vector不支持pop_front v.push_back(t);//尾部追加元素tv.pop_back();//删除尾元素 v.earse(iter);//删除迭代器iter所指位置处的元素。返回删除位置处后一个元素迭代器v.erase(iter1,iter2);//删除迭代器iter1与iter2区间内的元素。返回删除最后一个元素的后一个元素迭代器 v.clear();//清空容器,重新初始化容器v.resize(n);//将容器v的元素变为n个。若n<原始元素个数,删除多于元素。若n>原始元素个数,则用默认初始值初始化容器v.resize(n,t);//将容器元素变为n个t。与容器原始个数无关 vector<int> v(5,666);v.resize(3);//v内有3个元素,都是666v.resize(8);;//v内有8个元素,前5个个是666,后3个都是0(默认)v.resize(10,666);//v内有10个元素,都是666//vector不支持emplace_front();//下面的两个函数,是在内存中创建一个对象,然后添加进相应的位置v.empalce(iter,args);//在容器v的位置添加创建一个args对象v.emplace_back(args);//在容器v的尾部添加创建一个args对象 例如class A{ string name;int age;public: A(string name, int age);};int main(){ vector<A> v; v.emplace_back("C语言", 18);//在尾部创建一个元素 v.emplace(v.begin(),"C++",18);//在容器v的头部添加一个元素}v.capacity();//返回当前容器的容量(总共能存多少个)v.reserve(n);//为容器v重新分配n个内存空间(如果n<=当前容器大小,则什么都不做)六、容器操作使迭代器、引用、指针失效
1.概念:向容器中添加或者删除元素可能会使容器的迭代器、引用、指针失效。失效的迭代器、引用、指针不再表示任何元素,使用起来非常危险
2.添加元素
3.删除元素
删除元素之前的迭代器、引用、指针有效,之后的失效
七、vector是如何增长的
1.概念
vector是可变长的数组,当向其中增加元素时,如果空间已满,回自动申请一个新的空间,并将原来的空间释放,使指向原来空间的指针指向于新空间
2.方法:vector增长是有规律的,可以通过一个公式描述
到此这篇关于C++(STL库)之顺序容器vector的使用的文章就介绍到这了,更多相关C++ 顺序容器vector内容请搜素以前的文章或下面相关文章,希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
vector是C++标准模版库(STL,StandardTemplateLibrary)中的部分内容。之所以认为是一个容器,是因为它能够像容器一样存放各种类型的
介绍STL(standardtemplatelibrary)标准模板库,是一种高效的C++程序库。STL分为三类:container(容器),iterator(
在c++里面不得不提的一个标准库,就是STL,STL包含很多实用的数据结构,如vector,list,map,set等都是我们常用的,而c++11也对STL做了
C++vector中实际删除元素使用的是容器vecrotstd::vector::erase()方法。C++中std::remove()并不删除元素,因为容器的
vector简介vector是STL中最常见的容器,它是一种顺序容器,支持随机访问。vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似,不同