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 进行交换。

  • 相关阅读:
    Eclipse_debug异常_Source not found
    Mybatis异常_01_Invalid bound statement (not found)
    [转]Eclipse快捷键_01_常用快捷键汇总
    PL/SQL学习笔记_03_存储函数与存储过程
    PL/SQL学习笔记_02_游标
    PL/SQL学习笔记_01_基础:变量、流程控制
    Oracle学习笔记_05_分组函数
    博客园_01_为博客园添加目录的方法总结
    Oracle学习笔记_04_多表查询
    Oracle学习笔记_03_单行函数
  • 原文地址:https://www.cnblogs.com/kane0526/p/4316014.html
Copyright © 2011-2022 走看看