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;

    }

  • 相关阅读:
    LeetCode153 Find Minimum in Rotated Sorted Array. LeetCode162 Find Peak Element
    LeetCode208 Implement Trie (Prefix Tree). LeetCode211 Add and Search Word
    LeetCode172 Factorial Trailing Zeroes. LeetCode258 Add Digits. LeetCode268 Missing Number
    LeetCode191 Number of 1 Bits. LeetCode231 Power of Two. LeetCode342 Power of Four
    LeetCode225 Implement Stack using Queues
    LeetCode150 Evaluate Reverse Polish Notation
    LeetCode125 Valid Palindrome
    LeetCode128 Longest Consecutive Sequence
    LeetCode124 Binary Tree Maximum Path Sum
    LeetCode123 Best Time to Buy and Sell Stock III
  • 原文地址:https://www.cnblogs.com/turnips/p/5104917.html
Copyright © 2011-2022 走看看