vector容器的基本用法

vector介绍(南昌理工ACM)

vector容器是一个动态数组的结构,在内存中有一个指针指向一块连续的内存。类似数组结构一样。它的特点支持随机访问数据,因为其在内存中的单元是连续。它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C++ STL的一个重要成员,适用于对象简单,变化较小,并且频繁随机访问的场景,使用它时需要包含头文件

#include <vector>

一、vector的初始化


(1)  vector<int> a;// 定义了一个长度可变的int型数组。 

(2)  vector<int> a(x); 
    //定义了x个整型元素的向量,但没有给出初值,其值是不确定的。
    
(3)  vector<int> a(n,x); 
      //定义了n个整型元素的向量,且给出每个元素的初值为x。 
      
(4)  vector<int> a[x];//定义了一个一维长x,二维可变的int型数组。
 
(5)  vector<int> a(b); //用b向量来创建a向量,整体复制性赋值

(6)  vector<int> a(b.begin(),b.begin+x);
     //定义了a值为b中第0个到第(x-1)个(共x个)元素
     
(7)  int b[7]={1,2,3,4,5,9,8}; vector<int> a(b,b+7); 
      //从数组中获得初值


二、 vector对象的几个重要操作

(1)a.back(); 
//返回a的最后一个元素
(2)a.front();
 //返回a的第一个元素
(3)a.clear();
 //清空a中的元素
(4)a.empty();
 //判断a是否为空,空则返回ture,不空则返回false
(5)a.pop_back(); 
//删除a向量的最后一个元素
(6)a.erase(); 
//删除指针所指的数据项 
(7)a.push_back(x); 
//在a的最后一个向量后插入一个元素x 
(8)a.insert(a.begin()+n,x); 
//在a的第n个元素(从第0个算起)的位置插入数值x
(9)a.size(); 
//返回a中元素的个数;
(10)a.swap(b); 
//b为向量,将a中的元素和b中的元素进行整体性交换
(11) a.max_size();
//返回vector所能储存的最大的元素数目
(12)a.rbegin()        
//将vector反转后的开始指针返回(其实就是原来的end-1)
(13)a.rend()          
//将vector反转构的结束指针返回(其实就是原来的begin-1) 

三、 遍历vector的几种方式

(1)添加元素
1、 简单

vector<int> a;
 for(int i=0;i<10;i++)
 a.push_back(i);

2、从其他数组中选择元素向向量中添加

int a[6]={1,2,3,4,5,6};
vector<int> b;
for(int i=1;i<=4;i++)
b.push_back(a[i]);

3、从现有向量中选择元素向向量中添加

int a[6]={1,2,3,4,5,6};
vector<int> b;
vector<int> c(a,a+4);
for(vector<int>::iterator it=c.begin();it<c.end();it++)
//for(auto  it=c.begin();it<c.end();it++)
b.push_back(*it);

(2) 读取元素
1、通过下标方式读取

int a[6]={1,2,3,4,5,6};
vector<int> b(a,a+4);
for(int i=0;i<=b.size()-1;i++)
    cout<<b[i]<<" ";

2、通过遍历器方式读取

int a[6]={1,2,3,4,5,6};
vector<int> b(a,a+4);
for(vector<int>::iterator it=b.begin();it!=b.end();it++)
//for(auto  it=b.begin();it<b.end();it++)
    cout<<*it<<" ";  

PS:在vector当中包含三个迭代器成员变量


iterator start               // 表示目前使用空间的头

iterator finish             // 表示目前使用空间的尾

iterator end_of_storage    // 表示目前可用空间的尾

四、几种重要的算法

使用时需要头文件

#include <algorithm>
1sort(a.begin(),a.end()); 
//将a中的全部元素进行从小到大排列2reverse(a.begin(),a.end()); 
//对a中的全部元素倒置3copy(a.begin(),a.end(),b.begin()+1);
 //把a中的从a.begin()到a.end()的元素复制到b中,
 //从b.begin()+1的位置开始复制,覆盖掉原有元素4find(a.begin(),a.end(),x); 
//在a中的全部元素中查找数值x,若存在返回其在向量中的位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值