浅学c++中的vector

1. 首先需要加上#include<vector>         .

2.具体的用法以及函数调用:

           如何得到向量中的元素?其用法和数组一样:

          例如:

vector<int> a ; //声明一个int型向量

vector<int> a(10) ; //声明一个初始大小为10的向量

vector<int> a(10, 1) ; //声明一个初始大小为10且初始值都为1的向量

vector<int> b(a) ; //声明并用向量a初始化向量b

vector<int> b(a.begin(), a.begin()+3) ; //将a向量中从第0个到第2个(共3个)作为向量b的初始值

1.push_back   在数组的最后添加一个数据
2.pop_back    去掉数组的最后一个数据 
3.at                得到编号位置的数据
4.begin           得到数组头的指针
5.end             得到数组的最后一个单元+1的指针
6.front        得到数组头的引用
7.back            得到数组的最后一个单元的引用
8.max_size     得到vector最大可以是多大
9.capacity       当前vector分配的大小
10.size           当前使用数据的大小
11.resize         改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
12.reserve      改变当前vecotr所分配空间的大小
13.erase         删除指针指向的数据项
14.clear          清空当前的vector
15.rbegin        将vector反转后的开始指针返回(其实就是原来的end-1)
16.rend          将vector反转构的结束指针返回(其实就是原来的begin-1)
17.empty        判断vector是否为空
18.swap         与另一个vector交换数据

         3.2  详细的函数实现功能:其中vector<int> c.

                             c.clear()         移除容器中所有数据。

                             c.empty()         判断容器是否为空。

                             c.erase(pos)        删除pos位置的数据

                             c.erase(beg,end) 删除[beg,end)区间的数据

                             c.front()         传回第一个数据。

                             c.insert(pos,elem)  在pos位置插入一个elem拷贝

                             c.pop_back()     删除最后一个数据。

                             c.push_back(elem) 在尾部加入一个数据。

                             c.resize(num)     重新设置该容器的大小

                             c.size()         回容器中实际数据的个数。

                             c.begin()           返回指向容器第一个元素的迭代器

                             c.end()             返回指向容器最后一个元素的迭代器

3.遍历的方式

第一种,部分遍历
1 #include<iostream>
 2     #include<vector>
 3 
 4     using namespace std ;
 5 
 6     int main()
 7     {
 8         vector<int> a(10, 0) ;      //大小为10初值为0的向量a
 9 
10         //对其中部分元素进行输入
11         cin >>a[2] ;
12         cin >>a[5] ;
13         cin >>a[6] ;
14 
15         //全部输出
16         int i ;
17         for(i=0; i<a.size(); i++)
18             cout<<a[i]<<" " ;
19 
20         return 0 ;
21     }

全部遍历

 vector<int>::iterator t ;
    for(t=a.begin(); t!=a.end(); t++)
        cout<<*t<<" " ;

这是利用迭代器进行遍历

4.向量的基本操作

  1>. a.size()                 //获取向量中的元素个数


    2>. a.empty()                //判断向量是否为空


    3>. a.clear()                //清空向量中的元素


    4>. 复制
        a = b ;            //将b向量复制到a向量中


    5>. 比较
        保持 ==!=>>=<<= 的惯有含义 ;
        如: a == b ;    //a向量与b向量比较, 相等则返回1


    6>. 插入 - insert
        ①、 a.insert(a.begin(), 1000);            //将1000插入到向量a的起始位置前
        
        ②、 a.insert(a.begin(), 3, 1000) ;        //将1000分别插入到向量元素位置的0-2处(共3个元素)
        
        ③、 vector<int> a(5, 1) ;
            vector<int> b(10) ;
            b.insert(b.begin(), a.begin(), a.end()) ;        //将a.begin(), a.end()之间的全部元素插入到b.begin()前


    7>. 删除 - erase
        ①、 b.erase(b.begin()) ;                     //将起始位置的元素删除
        ②、 b.erase(b.begin(), b.begin()+3) ;        //将(b.begin(), b.begin()+3)之间的元素删除


    8>. 交换 - swap
        b.swap(a) ;            //a向量与b向量进行交换

5.二维向量

 vector< vector<int> > b(10, vector<int>(5));        //创建一个10*5的int型二维向量
   #include<iostream>
 2     #include<vector>
 3 
 4     using namespace std ;
 5 
 6     int main()
 7     {
 8         vector< vector<int> > b(10, vector<int>(5, 0)) ;
 9 
10         //对部分数据进行输入
11         cin>>b[1][1] ;
12         cin>>b[2][2] ;
13         cin>>b[3][3];
14 
15         //全部输出
16         int m, n ;
17         for(m=0; m<b.size(); m++)           //b.size()获取行向量的大小
18         {
19             for(n=0; n<b[m].size(); n++)    //获取向量中具体每个向量的大小
20                 cout<<b[m][n]<<" " ;
21             cout<<"\n" ;
22         }
23 
24         return 0;
25     }

复制代码

猜你喜欢

转载自blog.csdn.net/qq_40570748/article/details/81152836
今日推荐