STL中vector的基本用法范例

来源:互联网 发布:流星网络电视注册码 编辑:程序博客网 时间:2024/04/30 09:40
#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;
}

0 0
原创粉丝点击