• 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;
    }

    正确的结果:

  • 相关阅读:
    高盛、沃尔玛 题做出来还挂了的吐槽
    amazon师兄debrief
    到所有人家距离之和最短的中点 296. Best Meeting Point
    问问题没人回答的情况怎么办终于有解了
    找名人 277. Find the Celebrity
    数组生存游戏 289. Game of Life
    547. Number of Provinces 省份数量
    428. Serialize and Deserialize Nary Tree 序列化、反序列化n叉树
    alias别名简介和使用
    面试官:线程池执行过程中遇到异常会发生什么,怎样处理? Vincent
  • 原文地址:https://www.cnblogs.com/klb561/p/14188838.html
Copyright © 2020-2023  润新知