STL中vector的基本用法范例

#include <iostream>
#include <vector>
 
using namespace std;

 
//vector 是动态数组,连续内存空间,具有随机存取效率高的优点
//但是在指定位置插入数据效率较低

void show(vector<int> &n,string s);

 
 
//循环创建
vector<int> v_c()
{
    vector<int> v_0;
    int i =5;
    while(i--)
    {
        v_0.push_back(i);
    }
    return v_0;
}

 
//vector 构造函数
void vector_create()
{
    //初始化vector
    vector<int> v_0=v_c();
    show(v_0,"v_0");

 
    //从v中初始化
    vector<int> v_1(v_0.begin(),v_0.end());
    //或者是
    v_1.assign(v_0.begin(),v_0.end());
    show(v_1,"v_1");

 
    //拷贝n个elem到v_2中
    int elem = 11;
    int n = 2;
    vector<int> v_2(n,elem);
    //或者是
    v_2.assign(n,elem);
    show(v_2,"v_2");

 
 
    //拷贝构造函数
    vector<int> v_3(v_0);
    show(v_3,"v_3");

 
    //使用数组构造
    int arr[] = {1,2,3,4,5};
    vector<int> v_5(arr,arr+sizeof(arr)/sizeof(int));
    //或者是
    v_5.assign(arr,arr+sizeof(arr)/sizeof(int));
    show(v_5,"v_5");

 
    //直接等于号赋值
    vector<int> f;
    f=v_0;
    show(f,"f");

 
    //元素互换
    vector<int> h;
    h.swap(f);
    show(h,"h");
 
}


 
//vector 大小操作
 
void vector_some()
{
    vector<int> v_0=v_c();

 
    //返回容器中元素个数
    int size = v_0.size();
    cout<<"size="<<size<<endl;


 
    //判断是否为空
    bool b = v_0.empty();
    cout<<"b="<<b<<endl;


 
    //重新指定容器长度为num,若容器边长,则以默认值填充,若变短,则删除
    int num = 20;
    v_0.resize(num);


 
 
    //若边长 则以elem为填充
    int elem = 5;
    v_0.resize(num,elem);


 
    //获取容量
    int s = v_0.capacity();
    cout<<"s="<<s<<endl;


 
    //容器预留len个元素长度,预留位置不可初始化,元素不可访问
    int len = 20;
    v_0.reserve(len);


 
    //返回索引
    int ms = v_0.at(3);
    cout<<"ms="<<ms<<endl;


 
    //[]访问
    int ms2 = v_0[2];
    cout<<"ms2="<<ms2<<endl;


 
    //返回第一个元素
    int ms3= v_0.front();
    cout<<"ms3="<<ms3<<endl;


 
    //返回最后一个元素
    int ms4=v_0.back();
    cout<<"ms4="<<ms3<<endl;
 
}


 
//插入和删除
void push_pop()
{
    vector<int> v_0=v_c();

 
    //在i_v位置插入count个ele元素
    vector<int>::iterator i_v=v_0.begin();
    int count=4;
    int ele = 32;
    v_0.insert(i_v,count,ele);


 
    //push_back尾部插入
    int ele2=2;
    v_0.push_back(ele2);


 
    //pop_back删除最后一个元素
    v_0.pop_back();


 
    //删除迭代器区间元素
    vector<int>::iterator i_v_1=v_0.begin();
    vector<int>::iterator i_v_2=v_0.end();
    v_0.erase(i_v_1,i_v_2);


 
    //删除指定元素
    vector<int>::iterator i_v_3=v_0.begin();
    v_0.erase(i_v_3);


 
    //清空元素
    v_0.clear();


 
    //vector是单口容器,在指定位置操作数据效率低下,在端口操作数据效率较高
}


 
//遍历方法
void show(vector<int> &n,string s)
{
    for(vector<int>::iterator lt = n.begin();lt!=n.end();lt++)
    {
        cout<<s+"="<<*lt<<",";
    }
    cout<<endl;
}
 
int main()
{
    vector_create();
    vector_some();
    push_pop();
    cout<<"...................."<<endl;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值