vector向量练习

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

int main()
{
    //vec.end()指向的是最后一个元素的下一个位置
    int a[5]={1,2,3,4,5};
    vector<int>vec1(a,a+5);
    int b[5]={6,7,8,9,10};
    vector<int>vec2(&b[0],&b[5]);                       //问师哥问题、关于b[5]
    //用向量初始化向量,还可用向量的一部分去初始化另一个向量
    vector<int>vec4(vec1);
    for(int i=0;i<vec4.size();i++)
    {
        cout<<vec4[i]<<" ";
    }
    cout<<endl;
    //交换两个向量的元素
    vec1.swap(vec2);

    vector<char>vec3;
    int e[]={11,12,13,14,15};
    char f[]={'a','b','c','d','e'};
    cout<<sizeof(f)/sizeof(char)<<endl;
    //测试首尾元素、是否为空
    cout<<"向量vec1中首元素为"<<vec1.front()<<endl;
    cout<<"向量vec1中末元素为"<<vec1.back()<<endl;
    cout<<"向量vec2中首元素为"<<vec2.front()<<endl;
    cout<<"向量vec2中末元素为"<<vec2.back()<<endl;
    cout<<"向量vec1是否为空,是空返回1,不空返回0  "<<vec1.empty()<<endl;
    cout<<"向量vec2是否为空,是空返回1,不空返回0  "<<vec2.empty()<<endl;
    cout<<"向量vec3是否为空,是空返回1,不空返回0  "<<vec3.empty()<<endl;
    //下标访问元素
    for(int i=0;i<vec2.size();i++)
    {
        cout<<vec2[i]<<" ";
    }
    cout<<endl;
    //迭代器访问元素
    vector<int>::iterator c;
    for(c=vec1.begin();c!=vec1.end();c++)
    {
        cout<<*c<<" ";
    }
    cout<<endl;
    //直接逆序输出
    vector<int>::reverse_iterator k;
    for(k=vec1.rbegin();k!=vec1.rend();k++)
    {
        cout<<*k<<" ";
    }
    cout<<endl;
    //元素翻转(反转)后输出
    reverse(vec2.begin(),vec2.end());
    vector<int>::iterator d;
    for(d=vec2.begin();d!=vec2.end();d++)
    {
        cout<<*d<<" ";
    }
    cout<<endl;
    //末尾添加 并 删除性访问
    cout<<vec3.size()<<endl;
    for(int i=0;i<sizeof(f)/sizeof(char);i++)
    {
        vec3.push_back(f[i]);
    }
    cout<<vec3.size()<<endl;
    int g=vec3.size();
//    for(int i=0;i<vec3.size();i++)
//    {
//        cout<<vec3.back()<<" ";
//        vec3.pop_back();
//    }
//    for(int i=0;i<g;i++)
//    {
//        cout<<vec3.back()<<" ";
//        vec3.pop_back();
//    }
//    cout<<endl;
    //重定义大小(若缩小,删末元素)
    vec3.resize(4);
    vector<char>::iterator h;
    for(h=vec3.begin();h!=vec3.end();h++)
    {
        cout<<*h<<" ";
    }
    //插入与删除
    cout<<endl;
    vec3.insert(vec3.begin()+1,'f');            //位置前插
    vec3.erase(vec3.begin()+3);
    for(int i=0;i<vec3.size();i++)
    {
        cout<<vec3[i]<<" ";
    }
    cout<<endl;
    vec1.clear();
    cout<<"向量vec1是否为空,是空返回1,不空返回0  "<<vec1.empty()<<endl;
    //大范围删除
    vec2.erase(vec2.begin()+1,vec2.end()-1);
    for(int i=0;i<vec2.size();i++)
    {
        cout<<vec2[i]<<" ";
    }
    cout<<endl<<"pond";
    return 0;
}

猜你喜欢

转载自blog.csdn.net/zhaobaole2018/article/details/84141404