当前位置:首页 » 《关于电脑》 » 正文

C/C++ vector详解

22 人参与  2024年05月26日 15:28  分类 : 《关于电脑》  评论

点击全文阅读


要想了解STL,就必须会看:

cplusplus.comicon-default.png?t=N7T8https://legacy.cplusplus.com/

官方内容全都是英文的,可以参考:

C/C++初始识icon-default.png?t=N7T8https://blog.csdn.net/2301_77087344/article/details/138596294?spm=1001.2014.3001.5501

vector:向量,顺序表,是一个类模板,顺序容器

         vector类常用的函数如下:

1.构造函数


vector()://创建一个空vectorvector(int nSize)://创建一个vector,元素个数为nSizevector(int nSize,const t& t)://创建一个vector ,元素个数为nSize,且值均为tvector(const vector&)://赋值构造函数vector(begin,end)://赋值[begin,end)区间内另一个数组的元素到vector中

2.增加函数


void push_back(const T& x)://向尾部增加一个元素xiterator insert(iterator it,const T& x)://向量中迭代器指向元素前增加一个元素xiterator insert(iterator it,int n,const T& x)://向量中迭代器指向元素前增加n个相同元素xiterator insert(iterator it,const_iterator first,const_iterator last)://向量中迭代器指向元素前插入另一个相同类型向量的[firs.last)间的数据

3.删除函数


iterator erase(iterator it):删除向量中迭代器指向元素iterator erase(iterator first,iterator last):删除向量中[first,last)中元素void pop_back():删除向量中最后一个元素void clear():情况向量中所有元素

4.遍历函数


reference at(int pos)://返回pos位置元素的引用reference front()://返回首元素的引用reference back()://返回尾元素的引用iterator begin()://返回向量头指针,指向第一个元素iterator end()://返回为指针,指向向量最后一个元素的下一个位置reverse_iterator rbein()://反向迭代器,指向最后一个元素reverse_iterator rend()://指向第一个元素之前的位置

5.判断函数


bool empty() const://判断向量是否为空,为空,则向量中无元素

6.大小函数


int size() const://返回向量中元素的个数int capacity() const: //返回当前向量中宏能容纳的最大元素值int max_size() const://返回最大可允许的vector元素数量值

7.其他函数


void swap(vector&);//交换连个同类型的数据void assign(int n,const T& x);//设置向量中第n个元素为xvoid assign(const_iterator first,const_iterator last)://向量中[first,last)中元素设置成当前向量元素

示例:

1.初始化


#include<iostream>  #include<vector>    using namespace std;    class A  {      //空类  };  int main()  {            //int型vector      vector<int> vecInt;        //float型vector      vector<float> vecFloat;        //自定义类型,保存类A的vector      vector<A> vecA;        //自定义类型,保存指向类A的指针的vector      vector<A*> vecPointA;        return 0;  }   #include<iostream>  #include<vector>    using namespace std;    class A  {      //空类  };  int main()  {            //int型vector,包含3个元素      vector<int> vecIntA(3);            //int型vector,包含3个元素且每个元素都是9      vector<int> vecIntB(3,9);        //复制vecIntB到vecIntC      vector<int> vecIntC(vecIntB);            int iArray[]={2,4,6};      //创建vecIntD      vector<int> vecIntD(iArray,iArray+3);        //打印vectorA,此处也可以用下面注释内的代码来输出vector中的数据      /*for(int i=0;i<vecIntA.size();i++)     {         cout<<vecIntA[i]<<"     ";     }*/        cout<<"vecIntA:"<<endl;      for(vector<int>::iterator it = vecIntA.begin();it!=vecIntA.end();it++)      {          cout<<*it<<"     ";      }      cout<<endl;        //打印vecIntB      cout<<"VecIntB:"<<endl;      for(vector<int>::iterator it = vecIntB.begin() ;it!=vecIntB.end();it++)      {          cout<<*it<<"     ";      }      cout<<endl;        //打印vecIntC      cout<<"VecIntB:"<<endl;      for(vector<int>::iterator it = vecIntC.begin() ;it!=vecIntC.end();it++)      {          cout<<*it<<"     ";      }      cout<<endl;        //打印vecIntD      cout<<"vecIntD:"<<endl;      for(vector<int>::iterator it = vecIntD.begin() ;it!=vecIntD.end();it++)      {          cout<<*it<<"     ";      }      cout<<endl;      return 0;  }  

2.增加及获得元素:

#include<iostream>  #include<vector>    using namespace std;    class A  {  public:      int n;  public:      A(int n)      {          this->n = n;      }  };    int main()  {            //int型vector,包含3个元素      vector<A> vecClassA;        A a1(1);      A a2(2);      A a3(3);        //插入1 2 3      vecClassA.push_back(a1);      vecClassA.push_back(a2);      vecClassA.push_back(a3);                  int nSize = vecClassA.size();        cout<<"vecClassA:"<<endl;        //打印vecClassA,方法一:      for(int i=0;i<nSize;i++)      {          cout<<vecClassA[i].n<<"     ";      }      cout<<endl;        //打印vecClassA,方法二:        for(int i=0;i<nSize;i++)      {          cout<<vecClassA.at(i).n<<"     ";      }      cout<<endl;        //打印vecClassA,方法三:      for(vector<A>::iterator it = vecClassA.begin();it!=vecClassA.end();it++)      {          cout<<(*it).n<<"     ";      }      cout<<endl;            return 0;  }  

3.修改元素


修改元素方法有三:1.数组修改 2.引用修改3.迭代器修改

#include<iostream>  #include<vector>    using namespace std;      int main()  {            //int型vector,包含3个元素      vector<int> vecIntA;        //插入1 2 3      vecIntA.push_back(1);      vecIntA.push_back(2);      vecIntA.push_back(3);            int nSize = vecIntA.size();        //通过引用修改vector      cout<<"通过数组修改,第二个元素为8:"<<endl;      vecIntA[1]=8;        cout<<"vecIntA:"<<endl;      //打印vectorA      for(vector<int>::iterator it = vecIntA.begin();it!=vecIntA.end();it++)      {          cout<<*it<<"     ";      }      cout<<endl;            //通过引用修改vector      cout<<"通过引用修改,第二个元素为18:"<<endl;      int &m = vecIntA.at(1);      m=18;        cout<<"vecIntA:"<<endl;      //打印vectorA      for(vector<int>::iterator it = vecIntA.begin();it!=vecIntA.end();it++)      {          cout<<*it<<"     ";      }      cout<<endl;        //通过迭代器修改vector      cout<<"通过迭代器修改,第二个元素为28"<<endl;      vector<int>::iterator itr = vecIntA.begin()+1;      *itr = 28;        cout<<"vecIntA:"<<endl;      //打印vectorA      for(vector<int>::iterator it = vecIntA.begin();it!=vecIntA.end();it++)      {          cout<<*it<<"     ";      }      cout<<endl;        return 0;  } 

运行结果:

4.删除


删除向量主要通过erase和pop_back 

#include<iostream>  #include<vector>    using namespace std;      int _tmain(int argc, _TCHAR* argv[])  {            //int型vector,包含3个元素      vector<int> vecIntA;        //循环插入1 到10      for(int i=1;i<=10;i++)      {          vecIntA.push_back(i);      }            vecIntA.erase(vecIntA.begin()+4);                cout<<"删除第5个元素后的向量vecIntA:"<<endl;      //打印vectorA      for(vector<int>::iterator it = vecIntA.begin();it!=vecIntA.end();it++)      {          cout<<*it<<"\t";      }      cout<<endl;        //删除第2-5个元素      vecIntA.erase(vecIntA.begin()+1,vecIntA.begin()+5);        cout<<"删除第2-5个元素后的vecIntA:"<<endl;      //打印vectorA      for(vector<int>::iterator it = vecIntA.begin();it!=vecIntA.end();it++)      {          cout<<*it<<"\t";      }      cout<<endl;        //删除最后一个元素      vecIntA.pop_back();        cout<<"删除最后一个元素后的vecIntA:"<<endl;      //打印vectorA      for(vector<int>::iterator it = vecIntA.begin();it!=vecIntA.end();it++)      {          cout<<*it<<"\t";      }      cout<<endl;        return 0;  }  

运行结果:

 文章转载:

vector容器用法详解 - 蒲公英110 - 博客园 (cnblogs.com)


点击全文阅读


本文链接:http://zhangshiyu.com/post/113896.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1