• vector容器


    参考


    CSDN  顽强的土豆地雷
    https://blog.csdn.net/fuxingdecsdn/article/details/80411649 

    CSDN  kinghero123456

    https://blog.csdn.net/u014378771/article/details/90295900

    菜鸟教程

    https://www.runoob.com/w3cnote/cpp-vector-container-analysis.html

    头文件

    #include<vector>

    定义

    //第一种:不传参数
    vector<int> vint;
    vector<char> vchar;
    vector<string> vstring;
    
    //第二种:传一个参数 相当于开辟了一个数组
    vector<int> vint2(5);
    vector<char> vchar2(5);
    vector<string> vstring2(5);
    
    //第三种:参数一 n个元素,每个元素的初值 开辟数组并进行初始化
    vector<int> vint3(5,0);
    vector<char> vchar3(5,'a');
    vector<string> vstring3(5,"a");
    
    //第四种:传一段迭代器区间
    vector<int> vint4(vint3.begin(),vint3.end());
    vector<char> vchar4(vchar3.begin(),vchar3.end());                      
    vector<string> vstring4(vstring3.begin(),vstring3.end());
    
    //第五种:传一个对象,既拷贝函数
    vector<int> vint5(vint3);
    vector<char> vchar5(vchar3);
    vector<string> vstring5(vstring3);
    
    //第六种:赋值运算符的重载
    vector<int> vint6;
    vector<char> vchar6;
    vector<string> vstring6;
    vint6=vint5;
    vchar6=vchar5;
    vstring6=vstring5;

    在容器最后插入和删除元素

    .push_back()

    .pop_back()

    #include <string.h>
    #include <vector>
    #include <iostream>
    using namespace std;
     
    int main()
    {
        vector<int>obj;//创建一个向量存储容器 int
        for(int i=0;i<10;i++) // push_back(elem)在数组最后添加数据 
        {
            obj.push_back(i);
            cout<<obj[i]<<",";    
        }
     
        for(int i=0;i<5;i++)//去掉数组最后一个数据 
        {
            obj.pop_back();
        }
     
        cout<<"
    "<<endl;
     
        for(int i=0;i<obj.size();i++)//size()容器中实际数据个数 
        {
            cout<<obj[i]<<",";
        }
     
        return 0;
    }

    运行结果

    0,1,2,3,4,5,6,7,8,9,
    
    0,1,2,3,4,

    删除指定元素

    .erase()

    #include "stdafx.h"
    #include "iostream"
    #include "vector"
    using namespace std;
     
    int main()
    {
     
        vector<int> NumberArray;
        NumberArray.push_back(1);
        NumberArray.push_back(1);
        NumberArray.push_back(2);
        NumberArray.push_back(2);
         
            //查找并删除指定元素
        int iFind = 1;
        vector<int>::iterator it = find(NumberArray.begin(), NumberArray.end(), iFind); //第一次查找
        while (it != NumberArray.end())  //判断是否找到
        {
            it = NumberArray.erase(it); //找到了删除  并 移动 it  指向下一个位置   
                                        //错误写法: NumberArray.erase(it); it++;  //原因vector中元素被删除之后it已经失效,不能进行++操作
            it = find(it, NumberArray.end(), iFind); //继续查找
        }
     
        return 0;
    }

    指定位置插入元素

    .insert()

    vector<int> temp;
    //初始化后
    
    temp.insert(temp.begin()+2,9)//在temp的第2位后插入元素9

     

    清除

    .clear()

    #include <string.h>
    #include <vector>
    #include <iostream>
    using namespace std;
     
    int main()
    {
        vector<int>obj;
        for(int i=0;i<10;i++)//push_back(elem)在数组最后添加数据 
        {
            obj.push_back(i);
            cout<<obj[i]<<",";
        }
     
        obj.clear();//清除容器中所以数据
        for(int i=0;i<obj.size();i++)
        {
            cout<<obj[i]<<endl;
        }
     
        return 0;
    }

    结果

    0,1,2,3,4,5,6,7,8,9,

    大小

    //用来描述大小的一系列函数
    vector<int> test(5,1);
    cout<<test.size()<<endl;//表示顺序表的元素个数
    cout<<test.capacity()<<endl;//表示顺序表的容量
    cout<<test.max_size()<<endl;//表示容器的最大存储,但实际到不了
    test.resize(1);//设置大小,可以开辟出更多的空间,当参数小于时就销毁空间
    test.resize(10,2);//当大于时就开辟并初始化
    cout<<test.size()<<endl;
    test.empty();//用来检查是否为空
    test.reserve(10);//用来设置容器大小但是并不初始化,元素个数也没变,变化不可见
    test.shrink_to_fit();//将容器的大小收缩至于元素个数相同的大小

    排序

    #include <string.h>
    #include <vector>
    #include <iostream>
    #include <algorithm>
    using namespace std;
     
    int main()
    {
        vector<int>obj;
     
        obj.push_back(1);
        obj.push_back(3);
        obj.push_back(0);
     
        sort(obj.begin(),obj.end());//从小到大
     
        cout<<"从小到大:"<<endl;
        for(int i=0;i<obj.size();i++)
        {
            cout<<obj[i]<<",";  
        } 
     
        cout<<"
    "<<endl;
     
        cout<<"从大到小:"<<endl;
        reverse(obj.begin(),obj.end());//从大到小 
        for(int i=0;i<obj.size();i++)
        {
            cout<<obj[i]<<",";
        }
        return 0;
    }

    结果

    从小到大:
    0,1,3,
    
    从大到小:
    3,1,0,

    访问

    //关于元素存取的函数
    //operator[] 既重载[]使其类似于数组元素的操纵,实现随机访问
    cout<<test.at(1)<<endl;//类似于[]的作用,只是是一个函数行形式
    cout<<test.front()<<endl;//显示存在的第一个元素
    cout<<test.back()<<endl;//显示存在的最后一个元素
    int* p = test.data();//取到了一个指向顺序表的一个指针
    cout<<test.front()<<endl;//显示存在的第一个元素
    
    //修改动作函数
    test.assign(arr,arr+3);//assign替换函数可以替换一个对象的区间或者一个同类型的数组
    test.push_back(4);//尾插,并没有头插
    test.pop_back();//尾删                                                                                                                                        
    test.insert(it,5);//插入指定位置
    test.erase(it);//删除指定位置
    test.swap(test1);//交换函数,将两个对象进行交换
    test.clear();//清空整个顺序表
    vector<int>::iterator it2=test.emplace(it,5);//类似于insert但是会返回新插入元的迭代器
    test.emplace_back(10);//类似于尾插
  • 相关阅读:
    Java Web 047: 处理商品列表的查询
    Java Web 047:开发商品列表的模板页
    Java Web 046: 处理登录成功后的跳转
    Java Web 045: 处理登录请求
    Java Web 044: 处理注册响应
    Java Web 043: 处理注册请求
    Java Web 042: 创建UserDao控制user的相关数据库操作
    Java Web 041: 创建数据模型和模拟数据库
    Java Web 03: MVC分层架构 / JavaEE分层架构 (图解)
    Java Web 02: 单例模式
  • 原文地址:https://www.cnblogs.com/Gru-blog/p/11291093.html
Copyright © 2020-2023  润新知