zoukankan      html  css  js  c++  java
  • Vector使用方法简单整理

    使用vector,需要引用vector库:

    #include<vector>

    首先,创建一个可以容纳int的vector变量——arr:

    vector<int> arr;

    接着,就可以使用一些vector的内建函数了:

    arr.push_back(9);//在arr结尾插入数字9
    arr.pop_back();//删除arr末尾最后一个项
    arr.front();//arr的第一个项的值
    arr.back();//arr的最后一个项的值
    arr.begin();//arr的第一个项的指针
    arr.end();//arr的最后一个项的指针
    arr.size();//arr的实际长度
    arr.erase(arr.begin(),arr.end());//删除从arr的第一个到最后一个项
    arr.insert(arr.begin(),5);//在arr的头之前插入数字5
    arr.insert(arr.begin(),6,5);//在arr的头之前插入6个5
    arr.empty();//判断arr是否为空
    arr.clear();//将arr清空

    Vector可以搭配一些算法使用,首先应用algorithm库:

    #include<algorithm>

    算法函数如下:

    sort(arr.begin(),arr.end());//对vector排序
    stable_sort(arr.begin(),arr.end());//对vector稳定排序
    reverse(arr.begin(),arr.end());//反转vector
    vector<int>::iterator newend = unique(arr.begin(),arr.end());//对arr去重,并把去重后的实际个数存在迭代器newend里面
    arr.erase(newend,arr.end());//把从newend到arr最后一项(即重复的数字)去除

    附上完整测试代码:

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    int main(){
        cout<<"Vector functions:"<<endl;
        vector<int> arr;
        arr.push_back(9);
        arr.push_back(3);
        arr.push_back(5);
        arr.push_back(5);
        arr.push_back(7);
        arr.push_back(5);
        arr.push_back(3);
        arr.push_back(4);
        arr.push_back(2);
        arr.push_back(1);
        cout<<"arr.push_back() : ";
        for(int i = 0;i<arr.size();i++){
            cout<<arr[i]<<" ";
        }
        cout<<endl;
        
        arr.pop_back();
        cout<<"arr.pop_back()  : ";
        for(int i = 0;i<arr.size();i++){
            cout<<arr[i]<<" ";
        }
        cout<<endl;
        
        cout<<"arr.front()     : "<<arr.front()<<endl;
        
        cout<<"arr.back()      : "<<arr.back()<<endl;
        
        cout<<"arr.size()      : "<<arr.size()<<endl;
        
        arr.erase(arr.begin()+4,arr.end());
        cout<<"arr.erase()     : ";
        for(int i = 0;i<arr.size();i++){
            cout<<arr[i]<<" ";
        }
        cout<<endl;
        
        arr.insert(arr.begin(),6,5);
        cout<<"arr.insert()    : ";
        for(int i = 0;i<arr.size();i++){
            cout<<arr[i]<<" ";
        }
        cout<<endl;
        
        cout<<endl<<endl<<"Algorithm functions:"<<endl;
        
        sort(arr.begin(),arr.end());
        cout<<"sort():";
        for(int i = 0;i<arr.size();i++){
            cout<<arr[i]<<" ";
        }
        cout<<endl;
        
        reverse(arr.begin(),arr.end());
        cout<<"reverse():";
        for(int i = 0;i<arr.size();i++){
            cout<<arr[i]<<" ";
        }
        cout<<endl;
        
        vector<int>::iterator oldend = arr.end();
        vector<int>::iterator newend;
        newend = unique(arr.begin(),arr.end());
        arr.erase(newend,oldend);
        cout<<"unique():";
        for(int i = 0;i<arr.size();i++){
            cout<<arr[i]<<" ";
        }
        cout<<endl;
        
        cout<<endl<<endl<<"Vector functions:"<<endl;
        
        cout<<"arr.empty()     : ";
        if(arr.empty() == false){
            cout<<"false"<<endl;
        }
        else{
            cout<<"true"<<endl;
        }
        
        arr.clear();
        cout<<"arr.clear()     : ";
        for(int i = 0;i<arr.size();i++){
            cout<<arr[i]<<" ";
        }
        cout<<endl;
        
        cout<<"arr.empty()     : ";
        if(arr.empty() == false){
            cout<<"false"<<endl;
        }
        else{
            cout<<"true"<<endl;
        }
    }

     补充说明:在C中,有很多东西需要自己实现。C++提供了标准模板库(Standard Template Libray,STL),其中封装了很多容器,不需要费力去实现它们的细节而直接调用函数来实现功能。vector是其中之一,vector指向量,可以理解为“变长数组”,长度根据需要而自动改变的数组。有时会碰到普通数组会超过内存的情况,可以使用vector解决。而且,vector可以用来以邻接表的方式存储图,可以解决当节点数太多,无法使用邻接矩阵,又害怕使用指针实现邻接表的时候,使用很简单。

  • 相关阅读:
    linux ubuntu装机到可实现java(eclipse,intellij IDEA,android)开发全过程
    浅谈线程同步的几种方法
    KMP算法,这是我看到的最简单的最好理解的KMP算法
    常用基础算法C++实现
    堆内存和栈内存详解(转载)
    数据结构=。= 链表
    倒排索引--资料1
    倒排索引简单理解
    简单理解Socket
    8.结构体的使用 2015.12.3
  • 原文地址:https://www.cnblogs.com/SirJackie/p/11366564.html
Copyright © 2011-2022 走看看