zoukankan      html  css  js  c++  java
  • +1.1向量 链表 数组

    向量:向量支持随机读取和更改 查找一般 末端删除快 随机删除慢,它是 “class”. 可作为顺序容器,类似数组,但大小可动态变化。与数组比较,它浪费存储空间,用起来麻烦

    链表:只有头结点有名字,不支持随机读取和更改 查找慢 元素较多时删除时间大约是查找时间,适用于插入或删除频繁,存储空间需求不定的情况,存储空间不连续,动态分配内存;

    数组:,数组是“变量,大小不可改变,数组无法动态定做,或者要做额外的善后工作,数组无法整体复制,向量可以,数组无法扩容。存储效果高,存取数度快;

    vector(向量)是c++STL(标准模板类库)的重要一员,使用时,要包含头文件vector即可。

    • 数组无法整体复制

    int a[10] = {0};
    int b[10] = a; //错

    vector<int> c(10);
    vector<int> d = c; //正确

    除此之外,向量还有好多种定义方式,还可以从数组中获得初值,例如

    int a[3] = {1, 2, 3};
    vector<int> va(a, a+3);

    • 数组无法动态定做,或者要做额外的善后工作

    int n;
    cin>>n;
    int a[n]; //不正确,数组大小不确定

    若采用动态定做,从而需要释放空间

    int n;
    cin>>n;
    int* ap = new int[n];
    // 一系列数据处理
    delete[] ap;

    如果换成向量,则一目了然

    int n;
    cin>>n;
    vector<int> va(n);

    • 数组无法扩容

    vectot<int> va;

    //无法想象对应的数组操作
    for (int a; cin>>a; va.push_bach(a));

    向量还有好多常用的操作,这些操作是数组所不具备,但同时向量又可以像数组一样被使用,例如:

    vector<int> a;
    a.push_bach(5); //在a向量最后位置插入一个元素
    a.pop_back(); //删除a向量的最后一个元素
    a.clear(); //清空a向量中的元素
    int x = a.front(); //将a向量的第一个元素赋给x
    int y = a.back(); //将a向量的最后一个元素赋给y
    bool b = a.empty(); //判断是否为空
    a.resize(10); //将元素个数调至10个,多则删,少则补

    //等等

    其中a.begin(),b.end()分别表示向量a的起始元素位置和最后一个元素之外的元素位置.

    输出向量中的元素可以如下:

    for (int i = 0; i < a.size(); ++i)
        cout<<a[]<<" ";

    还有一个比较有用的是对向量中的元素进行排序:

    sort(a.begin(), a.end()); //从小到大排序

     
     
  • 相关阅读:
    Java实现字符串的包含
    Java实现字符串的包含
    Java实现字符串的包含
    Java实现字符串的包含
    Java实现字符串的包含
    穷文富理撑死工,得先学门能挣钱的手艺
    Windows更新清理工具 (winsxs 清理工具)
    SQLite实现内存键值存储
    Qt5.7.0移植到4412
    罗辑思维2014 第11集 迷茫时代的明白人(慢慢来,能做一点是一点),有书卖
  • 原文地址:https://www.cnblogs.com/Ph-one/p/7553209.html
Copyright © 2011-2022 走看看