zoukankan      html  css  js  c++  java
  • 学习笔记之vector向量容器

    今天复习到vector向量容器,里面包括vector向量容器的一些优点以及具体的使用方法及代码,分享给大家。

    Vector向量容器不但能够像数组一样对元素进行随机访问,还可以在尾部插入元素,是一种简单、高效的容器,完全可以代替数组。

    Vector具有内存自动管理的功能,对于元素的插入和删除,可以动态调整所占的内存空间。

    使用vector向量容器,需要在头文件中包含“#include<vector>”。

    Vector向量容器的下标是从0开始计数的。

    使用方法:

    1.创建vector对象

    (1)不指定容器的元素个数

    vector<int>v;

    (2)创建的时候指定容器的大小

    Vector<double>v10);

    (3)创建一个具有n个元素的向量容器对象,没个元素具有指定的初始值。

    Vector<int>v(10,8.6);

    2.尾部元素扩张

    在使用vector向量容器的时候,我们通常使用push_back()函数对vector容器在尾部追加新的元素。

    在尾部追加新的元素时候,vector容器会自动分配新的内存空间。

    vector<int>v;

    v.push_back(2);

    3.通过下标的方式访问vector元素

    vector<int>v;

    cout<<v[1]<<endl;

    4.通过迭代器访问vector元素

    我们在对vector中的元素进行访问的时候,通常使用迭代器配合循环语句对vector中的元素进行遍历访问,迭代器的类型一定要与它要遍历的vector对象的元素类型一致。

    #include<iostream>

    #include<vector>

    using namespace std;

    int main(){

        vector<int>v;

        v.push_back(2);

        v.push_back(7);

        v.push_back(10);

        vector<int>::iterator it;

        for( it = v.begin() ; it != v.end() ; it++ )

            cout<<*it<<" ";

        cout<<endl;

        return 0;

    }

    5.元素的插入

    insert方法可以在vector对象的任意位置前插入一个新的元素,同时,vector自动扩张一个元素空间,插入位置后的所有元素一次向后挪动一个位置。

    注意:insert()方法要求插入的位置,是元素的迭代器位置,而不是元素的下标。

    #include<iostream>

    #include<vector>

    using namespace std;

    int main(){

        vector<int>v;

        v.push_back(2);

        v.push_back(7);

        v.push_back(10);

        //在最前面插入元素,元素值为8

        v.insert(v.begin() , 8);

        //在第2个元素前面插入新元素,元素值为1

        v.insert(v.begin()+1 , 1);

        //在末尾追加新的元素3

        v.insert(v.end(),3);

        vector<int>::iterator it;

        for( it = v.begin() ; it != v.end() ; it++ )

            cout<<*it<<" ";

        cout<<endl;

        return 0;

    }

    6.元素的删除.

    erase()方法可以删除vector中迭代器所指的一个元素或一段区间中的所有元素。

    clear()方法可以一次性的删除vector中的所有元素。

    #include<iostream>

    #include<vector>

    using namespace std;

    int main(){

        vector<int>v;

        v.push_back(2);

        v.push_back(7);

        v.push_back(10);

        //在最前面插入元素,元素值为8

        v.insert(v.begin() , 8);

        //在第2个元素前面插入新元素,元素值为1

        v.insert(v.begin()+1 , 1);

        //在末尾追加新的元素3

        v.insert(v.end(),3);

        //删除第2个元素

        v.erase(v.begin()+1);

        //删除迭代器第1到第5区间的所有元素

        v.erase(v.begin(),v.begin()+5);

        

        //清空向量

        v.clear();

        vector<int>::iterator it;

        for( it = v.begin() ; it != v.end() ; it++ )

            cout<<*it<<" ";

        cout<<endl;

        return 0;

    }

    7.使用reverse反向排列算法

    reverse反向排列算法,需要定义头文件“#include<algorithm>”,该算法可以将向量中某段迭代器区间元素反向排列。

    #include<iostream>

    #include<vector>

    #include<algorithm>

    using namespace std;

    int main(){

        vector<int>v;

        v.push_back(2);

        v.push_back(7);

        v.push_back(10);

        //在最前面插入元素,元素值为8

        v.insert(v.begin() , 8);

        //在第2个元素前面插入新元素,元素值为1

        v.insert(v.begin()+1 , 1);

        //在末尾追加新的元素3

        v.insert(v.end(),3);

        vector<int>::iterator it;

        for( it = v.begin() ; it != v.end() ; it++ )

            cout<<*it<<" ";

        cout<<endl;

        reverse(v.begin() , v.end());

            for( it = v.begin() ; it != v.end() ; it++ )

            cout<<*it<<" ";

        cout<<endl;

        return 0;

    }

    8.在对vector向量容器中的元素进行排列的时候,还可以通过sort()算法排序,排列方法自定义。

    9.向量的大小

    使用size()方法可以返回向量的大小,即元素的个数。

    使用empty()方法可以返回向量是否为空。

    #include<iostream>

    #include<vector>

    #include<algorithm>

    using namespace std;

    int main(){

        vector<int>v;

        v.push_back(2);

        v.push_back(7);

        v.push_back(10);

        //在最前面插入元素,元素值为8

        v.insert(v.begin() , 8);

        //在第2个元素前面插入新元素,元素值为1

        v.insert(v.begin()+1 , 1);

        //在末尾追加新的元素3

        v.insert(v.end(),3);

        vector<int>::iterator it;

        for( it = v.begin() ; it != v.end() ; it++ )

            cout<<*it<<" ";

        cout<<endl;

        reverse(v.begin() , v.end());

            for( it = v.begin() ; it != v.end() ; it++ )

            cout<<*it<<" ";

        cout<<endl;

        //输出向量大小,即包含了多少个元素

        cout<<v.size()<<endl;

        //输出向量是否为空,如果非空,则返回逻辑假,即0,否则返回逻辑真,即1

        cout<<v.empty()<<endl;

        v.clear();

        cout<<v.size()<<endl;

        cout<<v.empty()<<endl;

        return 0;

    }

  • 相关阅读:
    回调函数、Java接口回调 总结
    java 中hashcode和equals 总结
    单一职责原则
    Java初始化理解与总结 转载
    2019-2020-2 20175305张天钰《网络对抗技术》Exp9 Web安全基础
    2019-2020-2 20175305张天钰《网络对抗技术》Exp 8 Web基础
    2019-2020-2 20175305 张天钰《网络对抗技术》Exp7 网络欺诈防范
    2019-2020-2 20175305张天钰《网络对抗技术》Exp6 MSF基础应用
    2019-2020-2 20175305张天钰《网络对抗技术》Exp5 信息搜集与漏洞扫描
    2019-2020-2 20175305张天钰《网络对抗技术》 Exp4 恶意代码分析
  • 原文地址:https://www.cnblogs.com/turnips/p/5104917.html
Copyright © 2011-2022 走看看