ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

C++~~~vector容器(p31-P40)

C++~~~vector容器(p31-P40) 一、vector容器1、vector基本概念vector数据结构和数组非常类似也成为单端数组。在数组的尾端进行插入删除。2.vector与普通数组区别数组是静态空间而vector可以动态扩展。3.动态扩展并不是在原空间之后续接新空间而是找更大的内存空间然后将原数据拷贝到新空间释放原空间。vector容器的迭代器是支持随机访问的迭代器。v.begin();第一个元素v.end();最后一个元素的后一个元素4.函数原型vectorTv;//采用末班实现类实现默认构造函数。vector(v.begin(),v.end());//将v[begin(),end())区间中的元素拷贝给本身vector(n,elem);//构造函数将n个elem拷贝给本身。vector(constvectorvec);//拷贝构造函数5.代码实现//vector容器--构造函数#includeiostream#includevector#includestring#includevectorusingnamespacestd;voidprintVector(vectorintV){for(vectorint::iterator itV.begin();it!V.end();it){cout*it ;}coutendl;}voidtest(){vectorintv1;//默认构造无参构造for(inti0;i10;i){v1.push_back(i);}printVector(v1);//通过区间方式进行构造vectorintv2(v1.begin(),v1.end());printVector(v2);//n个elem方式构造第一个参数是个数第二个是元素值//拷贝构造vectorintv4(v3);printVector(v4);}intmain(){test();}//输出01234567890123456789100100100100100100100100100100100100100100100100100100100100二、vector容器–赋值操作1.功能描述给vector容器进行赋值2.函数原型vectoroeprator(constvetcorvec);//重载等号操作符assign(beg,end);//将[beg,end)区间中的数据拷贝赋值给本身。assign(n,elem);//将n个elem拷贝赋值给本身//vector容器--赋值操作#includeiostream#includevector#includestring#includevectorusingnamespacestd;//利用迭代器对vector容器做一个for循环遍历输出//遍历操作voidprintTest(vectorintv){for(vectorint::iterator itv.begin();it!v.end();it){cout*it ;}coutendl;}//vector容器的赋值voidtest(){vectorintv1;for(inti0;i10;i){v1.push_back(i);}printTest(v1);//赋值 vectorintv2;v2v1;printTest(v2);//assign赋值vectorintv3;v3.assign(v1.begin(),v1.end());printTest(v3);//n个elem方式赋值vectorintv4;v4.assign(10,100);printTest(v4);}intmain(){test();}//输出012345678901234567890123456789100100100100100100100100100100vector赋值可以用也可以用assign。三、vector容器–插入和删除1.功能描述对vector容器的容量和大小操作。2.函数原型empty();//判断容器是否为空capacity();//容器的容量size();//返回容器中元素的个数。resize(intnum);//重新指定容器的长度为num若容器变成长则以默认值填充新位置。//如果容器变短则末尾超出容器长度的元素被删除resize(intnum,elem);//重新指定容器的长度为num若容器变长则以elem值填充新位置//如果容器变短则末尾超出容器长度的元素被删除。3.代码实现//vector容器--容量和大小#includeiostream#includevector#includestring#includevectorusingnamespacestd;//遍历操作voidprintTest(vectorintV){for(vectorint::iterator itV.begin();it!V.end();it){cout*it ;}coutendl;}voidtest(){vectorintv1;for(inti0;i10;i){v1.push_back(i);}printTest(v1);if(v1.empty()){//为真代表容器为空coutV1 is emptyendl;}else{coutV1 is not empty.endl;coutV1 capacity is v1.capacity()endl;coutV1 size is v1.size()endl;}// //重新指定大小// v1.resize(15);// printTest(v1);//如果重新指定的比原来长 默认用0填充新的位置。//重新指定大小v1.resize(15,100);//利用重载版本可以指定默认填充值参数2printTest(v1);//如果重新指定的比原来长 默认用0填充新的位置。v1.resize(5);printTest(v1);}intmain(){test();}//输出0123456789V1 isnotempty.V1 capacity is16V1 size is10012345678910010010010010001234四、vector容器–数据存取1.功能描述:对vector容器进行插入、删除操作2.函数原型push_back(ele);//尾部插入元素elepop_back();//删除最后一个元素insert(const_iterator pos,ele);//迭代器指向位置pos插入元素eleinsert(const_iterator pos,intcnt,ele);//迭代器指向位置pos插入CNT个元素eleerase(const_itarator pos);//删除迭代器指向的元素erase(const_iterator start,const_iterator end);//删除迭代器从start到end之间的元素clear();//删除容器中所有的元素3.代码实现//vector容器--数据存取#includeiostream#includevector#includestring#includevectorusingnamespacestd;voidprintTest(vectorintv){for(vectorint::iterator itv.begin();it!v.end();it){cout*it ;}coutendl;}voidtest(){vectorintv1;//尾插v1.push_back(1);v1.push_back(2);v1.push_back(3);v1.push_back(4);v1.push_back(5);v1.push_back(6);//遍历printTest(v1);//尾删v1.pop_back();//遍历printTest(v1);//插入v1.insert(v1.begin(),100);printTest(v1);v1.insert(v1.begin(),2,1000);printTest(v1);//删除参数也是迭代器v1.erase(v1.begin());printTest(v1);//清空v1.erase(v1.begin(),v1.end());printTest(v1);//清空v1.clear();printTest(v1);}intmain(){test();}//输出D:\SoftProjectOne\vectCustom.exe12345612345100123451000100010012345100010012345进程已结束退出代码为0总结尾插—push_back尾删—pop_back插入–insert位置迭代器删除–erase位置迭代器清空–clear五、vector容器–数据存取1.功能描述对vector中的数据的存取操作2.函数原型at(intidx);//返回索引[idx]所指的数据operator[];//返回索引idx所指的数据front();//返回容器的第一个数据元素back();//返回容器中最后一个数据元素3.代码实现//vector容器--数据存取#includeiostream#includevector#includestring#includevectorusingnamespacestd;voidtest(){vectorintv1;for(inti0;i10;i){v1.push_back(i);}//利用[]方式访问数组中的元素for(inti0;iv1.size();i){coutv1[i] ;}coutendl;//利用at方式访问元素for(inti0;iv1.size();i){coutv1.at(i) ;}coutendl;//获取第一个元素coutfirst element is v1.front()endl;//获取最后一个元素coutlast element is v1.back()endl;}intmain(){test();}//输出01234567890123456789first element is0last element is9
返回列表