STL之vector容器极其相关操作

本文详细介绍了C++中的vector容器,包括其构造方法(默认、区间、指定元素数量及复制)、赋值操作(直接赋值和assign)、遍历、大小容量管理(empty(),capacity(),size(),resize())、插入和删除元素、存取元素以及互换和预留空间的方法。
摘要由CSDN通过智能技术生成

vector是一个能够存放任意类型的动态数组。

1:构造函数

void test02(){
    //1:默认构造
    vector<int>v1;
    for(int i=0;i<10;i++){
        v1.push_back(i);
    }
    print(v1);//输出容器中的元素
    
    //2:区间构造
    vector<int> v2(v1.begin(),v1.end());
    print(v2);

    //3:n个elem方式构造 vetcor<> v(n,elem);
    vector<int> v3(10,6);
    print(v3); 

    //4:复制构造函数
    vector<int> v4(v3);
    print(v4);  
} //vector构造函数

2:赋值

void test03(){
    vector<int> v1;
    for(int i=0;i<10;i++){
        v1.push_back(i);
    }
   // print(v1);

    //1:赋值 =
    vector<int> v2;
    v2=v1;
   // print(v2);

    //2 assign
    vector<int> v3;
    v3.assign(v1.begin(),v1.end());
    //print(v3);

    //3 n个elem方式赋值
    vector<int> v4;
    v4.assign(2,9);
    print(v4);
}

3:遍历vector数组

void test01(){
    vector<int> v; //创建vector容器
    //向容器中插入数据
    v.push_back(10);
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);

    //通过迭代器访问
    vector<int>::iterator itBegin=v.begin();//vector起始位置
    vector<int>::iterator itEnd=v.end();//vector 指向最后元素的下一个元素

    //第一种遍历方式
    while(itBegin!=itEnd){
        cout<<*itBegin<<" ";
        itBegin++;
    }

    //第二种遍历方式
    for(vector<int>::iterator it=v.begin();it!=v.end();it++){
        cout<<*it<<" ";
    }

    //第三种遍历方式,STL提供的遍历算法
    for_each(v.begin(),v.end(),myPrint);

}//遍历vector数组

4:vector容器大小容量

void test04(){
    vector<int> v1;
    for(int i=0;i<10;i++){
        v1.push_back(i);
    }
    //1:empty()
    //2:capacity() 容量
    //3:size()  大小
    if(v1.empty()){
        cout<<"true"<<endl;
    }else{
        cout<<"false"<<endl;
        cout<<v1.capacity()<<endl; 
        cout<<v1.size()<<endl;
    }

    //4:resize() 重新指定大小,比原来长用0填充,比原来短,删除多余的。
    v1.resize(15);
    print(v1);
    v1.resize(5);
    print(v1);
    v1.resize(15,100);//指定用100填充
    print(v1);
}//vector容器大小容量

5:vector 插入删除

void test05(){
    vector<int> v1;
    for(int i=0;i<10;i++){
        //1:尾插法
        v1.push_back(i);
    }
    //遍历
    print(v1);

    //尾删
    v1.pop_back();
    print(v1);

    //插入  insert(迭代器,num)
    v1.insert(v1.begin(),10);
    print(v1);

    v1.insert(v1.begin(),2,100);
    print(v1);

    //删除 erase(迭代器)/erase(区间)
    v1.erase(v1.begin());
    print(v1);

    v1.erase(v1.begin(),v1.begin()+5);
    print(v1);
}//vector 插入删除

6:vector存取

void test06(){
    vector<int> v1;
    for(int i=0;i<10;i++){
        v1.push_back(i);
    }

    //利用中括号的方式访问
    cout<<v1[2]<<" ";

    //利用at
    cout<<v1.at(2);

    //第一个元素
    cout<<"first"<<v1.front()<<endl;

    //访问尾元素
    cout<<"end"<<v1.back()<<endl;

}//vector存取

7:互换容器

void test07(){
    vector<int> v1;
    for(int i=0;i<10;i++){
        v1.push_back(i);
    }
    vector<int>v2;
    for(int i=10;i>0;i--){
        v2.push_back(i);
    }

    print(v1);
    print(v2);
    v1.swap(v2);//交换
    print(v1);
    print(v2);
}//互换容器

8:预留空间

void test08(){
    vector<int>v;

    //利用reserve预留空间
    v.reserve(100000);
    int num=0;
    int *p=NULL;
    
    for(int i=0;i<100000;i++){
        v.push_back(i);
        if(p!=&v[0]){
            p=&v[0];
            num++;
        }
    }
    cout<<"num="<<num<<endl;//输出开辟了几次新内存
    
}//预留空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值