STL库vector的使用

来源:互联网 发布:淘宝开店身份证泄露 编辑:程序博客网 时间:2024/05/11 02:02
#include<vector>#include<algorithm>#include<iterator>#include<functional>#include<iostream>using namespace std;struct print{    void operator()(int n)    {        cout<<n<<' ';    }};int main(){    //输出的三种方式    int a[10] = {1,2,3,4,5,6,7,8,9,10};    vector<int> vt(a, a+10);    cout<<"out1: ";    for_each(vt.begin(), vt.end(), print());    cout<<endl;    cout<<"out2:(无越界检查) ";    for(int i=0; i<vt.size(); ++i)        cout<<vt[i]<<' ';    cout<<endl;    cout<<"out3:(有越界检查) ";    for(int i=0; i<vt.size(); ++i)        cout<<vt.at(i)<<' ';    cout<<endl;    //assign赋值    vector<int> va;    va.assign(5, 0);    for_each(va.begin(), va.end(), print());    cout<<endl;    va.assign(vt.begin(), vt.end());    for_each(va.begin(), va.end()-5, print());    cout<<endl;    //back返回一个引用,它指向序列中最后一个元素,该序列不能为空    cout<<vt.back()<<endl;    //capacity    cout<<vt.capacity()<<endl;    //cbegin其实这个和begin差不多,只是具有了const属性,不能用于修改元素而已    vector<int>::const_iterator iter, iter1;    iter = vt.cbegin();    cout<<*iter<<endl;    iter = vt.cend();//end指向最后一个元素的下一个元素    cout<<*(iter-1)<<endl;    //clear调用的是erase函数    vt.clear();    for_each(vt.begin(), vt.end(), print());    //rbegin返回一个逆序迭代器,它指向容器c的最后一个元素    vector<int>::reverse_iterator it;    it = va.rbegin();    cout<<*it<<endl;    //crbegin该函数返回一个具有const属性的reverse_iterator,指向该容器的最后一个元素    for_each(va.begin(), va.end(), print());    cout<<endl;    vector<int>::const_reverse_iterator it1;    cout<<endl;    it1 = va.crbegin();    cout<<"测试";    for_each(va.begin(), va.end(), print());    cout<<endl;    cout<<*it<<endl;    //其实crend=cend+rend的特性组合。    //返回一个const_reverse_iterator(具有const属性的reverse_iterator)指向假设存在于一个倒序容器的最后一个位置后的超尾元素。    //(超尾元素本身并不是实际存在的)    it1 = va.crend();    for_each(va.begin(), va.end(), print());    cout<<endl;    cout<<*(it1-1)<<endl;    //data    int *p = va.data()+9;    cout<<*p<<endl;    /*emplace    http://blog.csdn.net/qq844352155/article/details/38635465 */    for_each(va.begin(), va.end(), print());    cout<<endl;    va.emplace(va.begin()+1, 100);    for_each(va.begin(), va.end(), print());    cout<<endl;    //erase    cout<<"erase"<<endl;    for_each(va.begin(), va.end(), print());    cout<<endl;    va.erase(va.begin(),va.begin()+5);     for_each(va.begin(), va.end(), print());    cout<<endl;    //emplace_back一个相似的方法是push_back    va.emplace_back(100);    for_each(va.begin(), va.end(), print());    cout<<endl;    if(!va.empty())    {        //maxsize返回所能控制的最大长度        cout<<va.max_size()<<endl;    }    //front    vector<int>::const_reference ref = va.front();    cout<<ref<<endl;    vt.insert(vt.end(), 999);       for_each(vt.begin(), vt.end(), print());}
1 0