• c++中的vertor


    vector是一种可以存储任意类型的动态数组,属于序列式容器,可以用sort对其进行排序,底层数据结构是数组,可以随机访问元素。

    #include<iostream>
    #include<vector>
    #include<algorithm>
    #include<string>
    using namespace std;
    int main()
    {
        vector<int> a,b;
        int i,j,k,t,n,m;


        //插入vector
        vector<int>::iterator id=a.begin()-1;
        for(i=1;i<11;i++)
        {
            a.push_back(i);
            b.push_back(i);
        }


        //遍历动态数组 
        for(i=0;i<10;i++)     //  最普通的遍历 
        cout<<a[i]<<" ";
        cout<<endl;
        cout<<"用迭代器,begin"<<endl;
        vector<int>::iterator it=a.begin();  //  用迭代器遍历 
        for(;it!=a.end();it++)   
        cout<<*it<<" ";
        cout<<endl;
        cout<<"用迭代器:rend"<<endl; 
        vector<int>::reverse_iterator iq=a.rend()-1;   //书上说rend相当于begin前一个位置,按书上的说的来敲,iq应该是++,但我一++,他就崩溃,搜了下网上的都是--, 
        for(;iq!=a.rbegin()-1;iq--)  //疑惑,看来不能完全照书敲,实践出真知。 
        cout<<*iq<<" ";
        cout<<endl;
        cout<<"用迭代器:rbegin"<<endl;
        vector<int>::reverse_iterator ir=a.rbegin(); // 这个倒是和书上说的一样。 
        for(;ir!=a.rend();ir++)    //
        cout<<*ir<<" ";
        cout<<endl;


        cout<<"a.front:"<<a.front()<<endl; //访问首元素和尾元素 
        cout<<"a.back:"<<a.back()<<endl;
        cout<<"a[5]:"<<a.at(5)<<endl; // 访问指定元素 


        //动态数组的大小 
        cout<<"a.size:"<<a.size()<<endl;
        cout<<"a.max_size:"<<a.max_size()<<endl;
        cout<<"a.capacity:"<<a.capacity()<<endl;  //这个动态数组所能容纳的最大容量 
        a.resize(15);// 改变a的大小 
        cout<<"change the size of a:"<<a.size()<<endl; 


        //动态数组的交换 
        a.swap(b);
        cout<<"swap a and b"<<endl;
        cout<<"a:";
        for(i=0;i!=a.size();i++)
        cout<<a[i]<<" ";
        cout<<endl;
        cout<<"b:";
        for(i=0;i!=b.size();i++)
        cout<<b[i]<<" ";
        cout<<endl;


        //对动态数组指定位置进行赋值 
        //a.assign(4,999);  //
        //
        cout<<"a[4]:"<<a[3]<<endl;
        //a.assign(*(a.begin()),8888);//发现一个bug,我如果把此句的前一句放到此句后面,两个输出都为8888 
        cout<<"a[0]:"<<*(a.begin())<<endl;//对于bug这个我无法解释 
        //如图


        a.reserve(36);  //reserve就是改变内存分给a的大小,不试不知道,一试吓一跳,如果你被改的值大于a的size,可以改变,若小于a的size,则不可以改变。 
        for(i=0;i!=a.size();i++)
        cout<<a[i]<<" ";
        cout<<endl;
        cout<<"a.max_size:"<<a.capacity()<<endl;

    如果换为这句,就成了下图

    a.reserve(8); 


        //
        a.erase(a.begin());//
        a.pop_back();//
        a.clear();   //
        cout<<a.size()<<endl;
        return 0;
    }

    正确的结果:

  • 相关阅读:
    「十二省联考2019」 春节十二响
    「八省联考2018」 劈配
    斯特林数
    「POJ2505」A multiplication game [博弈论]
    [luogu2048] [bzoj2006] [NOI2010] 超级钢琴 题解
    [HNOI2002]-洛谷2234-营业额统计-Treap
    平衡树Treap模板与原理
    KMP算法讲解
    高斯消元--模板,原理
    第一篇博客!!
  • 原文地址:https://www.cnblogs.com/klb561/p/14188838.html
Copyright © 2020-2023  润新知