zoukankan      html  css  js  c++  java
  • 初步STL集装箱Vector

    vector

     

    特点:

    1.可变长的动态数组
    2.使用时包括头文件 #include <vector>
    3.支持随机訪问迭代器
    • 依据下标随机訪问某个元素时间为常数
    • 在尾部加入速度非常快
    • 在中间插入慢

     

     

    成员函数

    初始化

    vector();              初始化成空
    vector(int n);               初始化成有n个元素
    vector(int n, const T & val);     初始化成有n个元素, 每一个元素的值都是val,类型是T
    vector(iterator first, iterator last);  初始化为与别的容器上区间[first, last)一致的内容


    举例:

    1.创建一个int类型的空的vector对象: 

      vector<int> intvec; 

    2.创建一个包括5个int类型数据的vector: 

        vector<int> intvec(5); 

    3.创建一个包括5个int类型数据的vector,而且都初始化为2: 

           vector<int> intvec(5, int(2)); 

    4.通过复制某vec容器来创建

         vector<int> intvec(vec.begin+M,vec.begin+N)

     

     

     

    元素的訪问

     

    intvec.at(index) 

    返回由index指定的位置上的元素

    intvec[index] 

    返回由index指定的位置上的元素

     

     

     


    举例:

     

    include <iostream>
    #include <vector>
    using namespace std;
    int main()
    {
        vector<int> vec(10);
        for (int i = 0;i != vec.size();i++)
        {
            vec.at(i) = i;
            //vec[i] = i ;
        }
    
        for (int i = 0;i != vec.size();i++)
        {
            cout << vec.at(i)<<endl;
            //cout <<vec[i]<<endl;
        }
    
         
        
    
        return 0;
    }
    
    


     

    容器的大小

    表达式 

    作用

    intvec.capacity() 

    返回不又一次分配空间能够插入到容器intvec中的元素的最大个数

    intvec.empty() 

    容器intvec为空。返回true;否则,返回false

    Intvec.size() 

    返回容器intvec中当前的个数

    intvec.resize(num) 

    将元素个数改为num。假设size()添加,默认的构造函数负责创建这些新元素

    intvec.resize(num, elem)

    将元素个数改为num。

    假设size()添加,默认的构造函数将这些新元素初始化为elem

     

    举例:

     

    #include <iostream>
    #include <vector>
    using namespace std;
    int main()
    {
        vector<int> vec1;
        cout << vec1.empty()<<endl; //返回1
        cout << vec1.size()<<endl;  //返回0
    
        vector<int> vec2(20);
        cout << vec2.empty()<<endl; //返回0
        cout << vec2.size()<<endl;  //返回20
    
        vector<int> vec3(15,1);
        cout << vec3.capacity()<<endl;//返回15
        vec3.push_back(1);
        cout << vec3.size()<<endl;  //返回16
        cout << vec3.capacity()<<endl;//返回30
                                      //数组不够时。下次又一次分配时会扩大为两倍
    
        return 0;
    }
    


     

    容器的操作

       语句   

         作用

    intvec.clear()    

    从容器中删除全部元素

    intvec.erase(position) 

    删除由position指定的位置上的元素

    intvec.erase(beg,end)   

    删除从beg到end-1之间的全部元素

    intvec.insert(position, elem)   

    将elem的一个拷贝插入到由position指定的位置上,并返回新元素的位置

    intvec.inser(position, n, elem) 

    将elem的n个拷贝插入到由 position指定的位置上

    intvec.insert(position, beg, end) 

    将从beg到end-1之间的全部元素的拷贝插入到intvec中由position指定的位置上

    intvec.push_back(elem) 

    将elem的一个拷贝插入到vector的末尾

    intvec.pop_back()   

    删除最后元素

    intvec.front()

    返回第一个元素的引用,不检查容器是否为空

    Intvec.back()

    返回最后一个元素的引用,不检查容器是否为空

     

    #include <iostream>
    #include <vector>
    using namespace std;
    int main()
    {
        vector<int> vec(10,1);
        cout<<vec.empty()<<endl;  //返回0
        vec.clear();
        cout<<vec.empty()<<endl;  //返回1
    
        vector<int> vec1(1,1);
        vec1.insert(vec1.begin()+1,2); //在该位置插入,把原来该位置以其以后的元素总体后移
        for(int i = 0;i != vec1.size();i++)
            cout<<vec1.at(i);  //12
        cout<<endl;
    
        vec1.push_back(3);
        for(int i = 0;i != vec1.size();i++)
            cout<<vec1.at(i);  //123
        cout<<endl;
    
        vec1.pop_back();
        vec1.pop_back();
        for(int i = 0;i != vec1.size();i++)
            cout<<vec1.at(i);  //1
        cout<<endl;
    
        return 0;
    }
    


     

    #include <iostream>
    #include <vector>
    using namespace std;
    int main()
    {
        vector<int> vec(10,1);
        vec.push_back(2);//12
    
        cout<<vec.front()<<endl;  //返回1
        cout<<vec.back()<<endl;  //返回2
    
        int &head = vec.front();
        head++;
        int &tail = vec.back();
        tail--;
        cout<<vec.front()<<endl;  //返回2
        cout<<vec.back()<<endl;  //返回1
    
        return 0;
    }
    


     

    二维数组

    vector< vector<int> > v(3);
    //v有3个元素,
    //每一个元素都是vector<int> 容器

     

    #include <iostream>
    #include <vector>
    using namespace std;
    int main() {
        vector< vector<int> > v(3);
        for(int i=0; i<v.size(); ++i)
            for(int j=0; j<4; ++j)
                v[i].push_back(j);
        for(int i=0; i<v.size(); ++i){
            for(int j=0; j<v[i].size(); ++j)
                cout<<v[i][j]<<" ";
            cout<<endl;
        }
        return 0;
    }
    


     输出:

    0  1  2  3

    0  1  2  3

    0  1  2  3

     

     


     

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    【23设计模式】总结
    【JAVA】内部类,内部接口
    【JAVA】接口
    【JAVA】抽象类,抽象方法
    【JAVA】类加载器
    【JAVA】枚举
    【JAVA】序列化
    【JAVA】异常笔记
    汇编笔记_第十一章
    汇编笔记_第十章
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4655652.html
Copyright © 2011-2022 走看看