STL——vector

vector的使用
#include <iostream>
#include <vector>

using namespace std;

void VectorInit()         //构造
{
    int array[10] = {1,2,3,4,5,6,7};
    vector<int> v1;           //无参构造
    vector<int> v2(array,array + 4); //左闭右开区间拷贝
    vector<int> v3(v2);  //字符串地址拷贝
    vector<int> v4(10,1);//10个1
   
    for(int i = 0;i < v2.size();i ++)//通过size()大小遍历
    {
        cout << v2[i] << " ";
    }
    cout << endl;

    for(int i = 0;i < v3.size();i ++)
    {
        cout << v3[i] << " ";
    }
    cout << endl;
    
    for(int i = 0;i < v4.size();i ++)
    {
        cout << v4[i] << " ";
    }
    cout << endl;
}

void VectorAssign()     //赋值
{
    int array[10] = {1,2,3,4,5,6,7};
    vector<int> v1;

    v1.assign(array,array + 3);
    for(int i = 0;i < v1.size();i ++)
    {
        cout << v1[i] << " ";
    }
    cout << endl;

    v1.assign(3,9);//assgin(n,elem);将n个elem赋值到本身
    for(int i = 0;i < v1.size();i ++)
    {
        cout << v1[i] << " ";
    }
    cout << endl;
}

void VectorSwap()
{
    vector<int> v1(10),v2(5);
    //v1.resize(10);     重置大小
    //v2.resize(5);
    
    for(int i = 0;i < 10;i ++)
    {
        v1[i] = i + 1;
    }

    for(int i = 0;i < 5;i ++)
    {
        v2[i] = i + 10;
    }
    v1.swap(v2);        //交换

    for(int i = 0;i < v1.size();i ++)
    {
        cout << v1[i] << " ";
    }
    cout << endl;
}

void VectorSize()           //大小
{
    vector<int> v1(10);
    cout << "size : " << v1.size() << endl;

    if(v1.empty())        //判断是否为空
    {
        cout << "v1 is null !" << endl;
    }
    else
    {
        cout << "v1 is not null" << endl;
    }
    for(int i = 0;i < v1.size(); i ++)
    {
        v1[i] = i + 1;
    }

    for(int i = 0;i < v1.size(); i ++)
    {
        cout << v1[i] << " ";
    }
    cout << endl;
    
    v1.resize(20,1);  //重置长度20,用1补齐,默认用0补齐
    for(int i = 0;i < v1.size(); i ++)
    {
        cout << v1[i] << " ";
    }
    cout << endl;

    v1.resize(5);    //重置长度为5,多余删掉
    for(int i = 0;i < v1.size(); i ++)
    {
        cout << v1[i] << " ";
    }
    cout << endl;

}

void VectorAt()           //数据存取
{
    vector<int> v1(10);

    for(int i = 0;i < v1.size(); i ++)
    {
        v1.at(i) = i + 1;     //at() = []
    }

    v1.front() = 100;     //修改头部数字
    v1.back() = 300;      //修改尾部数字

    for(int i = 0;i < v1.size(); i ++)
    {
        cout << v1[i] << " ";
    }
    cout << endl;

}

void VectorIterator()         //迭代器
{
    vector<int> v(10);

    for(int i = 0;i < v.size(); i ++)
    {
        v.at(i) = i + 1;     
    }

    for(vector<int>::iterator it = v.begin();it != v.end() ; it++) //正向
    {
        cout << *it << " ";    //指针
    }
    cout << endl;
    
    for(vector<int>::reverse_iterator rit = v.rbegin();rit != v.rend() ; rit++)     //逆向迭代器
    {
        cout << *rit << " ";
    }
    cout << endl;
}

void VectorInsert()    //插入,删除
{
    vector<int> v1,v2;

    for(int i = 0;i < 10;i ++)
    {
        v1.push_back(i + 1);   //之后插入,自动改变大小
        v2.push_back(i + 10);
    }

    
    for(vector<int>::iterator it = v1.begin();it != v1.end() ; it++)
    {
        cout << *it << " ";
    }      //遍历
    cout << endl;

    for(vector<int>::iterator it = v2.begin();it != v2.end() ; it++)
    {
        cout << *it << " ";
    }     //遍历
    cout << endl;

    v1.insert(v1.begin(),100);     //将开头位置插入数字100
    for(vector<int>::iterator it = v1.begin();it != v1.end() ; it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    v1.insert(v1.begin(),v2.begin(),v2.end());//在v1开头插入v2开头至末尾的数字
    for(vector<int>::iterator it = v1.begin();it != v1.end() ; it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    v1.insert(v1.begin(),10,1);//在v1开头插入10个1
    for(vector<int>::iterator it = v1.begin();it != v1.end() ; it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    v1.erase(v1.begin());//删除开头位置数字
    for(vector<int>::iterator it = v1.begin();it != v1.end() ; it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    v1.erase(v1.begin(),v1.begin() + 5);//删除开头至之后5个数字
    for(vector<int>::iterator it = v1.begin();it != v1.end() ; it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    v1.clear();//清除所有
    for(vector<int>::iterator it = v1.begin();it != v1.end() ; it++)
    {
        cout << *it << " ";
    }
    cout << endl;
};

int main()
{
    //VectorInit();
    //VectorAssign();
    //VectorSwap();
    //VectorSize();
    //VectorAt();
    //VectorIterator();
    VectorInsert();

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值