zoukankan      html  css  js  c++  java
  • STL学习之vector

       vector是一个线性顺序结构。相当于数组,但其大小可以不预先指定,并且自动扩展。它可以像指针一样被操作,由于它的特性我们完全可以将vector看做动态数组。

    特点:

    1、指定一块如同数组一样的连续存储,但空间可以动态扩展。即它可以像数组一样操作,并且可以动态操作。

    2、随机访问方便,它像数组一样被访问。

    3、节省空间,因为它是连续存储,在存储的区域是没有被浪费的,当然未存储的区域实际是浪费的。

    4、在内部插入删除效率非常低,这样的操作基本是被禁止的。vector被设计成只能在后端进行追加和删除操作,其原因是vector内部实现是按照顺序表的原理。

    5、当动态添加的数据操作vector默认分配的大小时要进行内存的重新分配(成倍叠加)、拷贝与释放,这种操作非常耗性能。

    vector 的基本操作有:
     
    s[i]直接以下标方式访问容器中的元素。

    s.front()  返回首元素。

    s.back()  返回尾元素。  

    s.push_back(x)向表尾插入元素x。
     
    s.size()  返回表长。
     
    s.empty()  当表空时,返回真,否则返回假。

    s.pop_back() 删除表尾元素。

    s.begin()  返回指向首元素的随机存取迭代器。
     
    s.end()   返回指向尾元素的下一个位置的随机存取迭代器。
     
    s.insert(it, x) 向迭代器it 指向的元素前插入新元素x。
     
    s.insert(it, n, x)向迭代器it 指向的元素前插入n 个x。
     
    s.insert(it, first, last)将由迭代器first 和last 所指定的序列[first, last)插入到迭代器it 指向的元素前面。  

    s.erase(it)删除由迭代器it 所指向的元素。
     
    s.erase(first, last)删除由迭代器first 和last 所指定的序列[first, last)。   
     
    s.clear()删除容器中的所有的元素。
     
    s.swap(v)将s 与另一个vector 对象v 进行交换。

  • 相关阅读:
    table拖动列宽
    解决 wm_concat函数 长度不够问题
    「Luogu」[JSOI2007]字符加密 解题报告
    Markdown数学符号
    「P5004」专心OI
    「CF242E」XOR on Segment 解题报告
    「CF86D」Powerful array 解题报告
    「USACO08JAN」电话线Telephone Lines 解题报告
    「Luogu P2015」二叉苹果树 解题报告
    「Luogu P3866」[TJOI2009]战争游戏 解题报告
  • 原文地址:https://www.cnblogs.com/kane0526/p/4316014.html
Copyright © 2011-2022 走看看