zoukankan      html  css  js  c++  java
  • STL中vector小结

    (1)使用vector之前必须包含头文件<vector>:#include<vector>
    
    (2)namespace std{
         template <class T,
                   class Allocator = allocator<T> >
         class vector;    
        }
    vector的元素可以是任意类型T,但必须具备assignable和copyable两个性质。第二个template参数可有可无,用来定义内存模型,缺省的模型是C++标准程序库提供的allocator。
    
    (3)在末端附加或删除元素时,vector的性能相当好。可是如果你在前端或中部安插或删除元素,性能就不怎么样了,因为操作点之后的每一个元素都必须移动到另一个位置,而每一次移动都得调用assignment操作符
    
    (4)vector性能优异的秘籍之一就是配置比其所容纳的元素所需更多的内存。当vector申请的内存被用尽时,vector会重新申请一片新的内存,通常新申请的内存会是原来内存的两倍.一旦内存重新配置,和vector元素相关的所有references,pointers,iterators都会失效
    
    (5)vector的各项操作:
    vector<Elem> c      产生一个空vector
    vector<Elem> c1(c2)      产生另一个同型vector的副本
    vector<Elem> c(n)      利用元素的default构造函数生成一个大小为n的vector
    vector<Elem> c(n, elem)      产生一个大小为n的vector,每个元素值都是elem
    vector<Elem> c(beg, end)      产生一个vector,以区间[beg, end)作为元素初值
    c.~vector<Elem>()      销毁所有元素并释放内存
    
    c.size()      返回当前的元素数量
    c.empty()      判断vector是否为空
    c.max_size()      返回可容纳的元素最大数值
    c.capacity()      返回重新分配空间前所能容纳的元素最大数量
    c.reserve()      如果容量不足,扩大之
    c1 compare c2      compare可为==,!=,<,>,<=和>=
    
    c1 = c2      将c2全部元素赋值给c1
    c.assign(n, elem)      复制n个elem,赋值给c
    c.assign(beg, end)      将区间[beg, end)内的元素赋值给c
    c1.swap(c2)      将c1和c2元素互换
    
    c.at(idx)      返回索引idx所标示的元素,如果idx越界则抛出out_of_range异常
    c[idx]      返回索引idx所标示的元素,不进行范围检查
    c.front()      返回第一个元素,不检查元素是否存在
    c.back()      返回最后一个元素,不检查元素是否存在
    
    c.begin()      返回一个随机存取迭代器,指向第一个元素
    c.end()      返回一个随机存取迭代器,指向最后元素的下一个位置
    c.rbegin()      返回一个逆向迭代器,指向逆向迭代的第一个元素
    c.rend()      返回一个逆向迭代器,指向逆向迭代的最后元素的下一个位置
    vector迭代器持续有效,除非发生两种情况:(1)使用者在一个较小的索引位置上安插或移除元素(2)由于容量的变化而引起内存的重新分配
    
    c.insert(it, elem)      在it位置上插入一个elem副本并返回新元素的位置
    c.insert(it, n, elem)      在it位置上插入n个elem副本,无返回值
    c.insert(it, beg, end)      在it位置上插入区间[beg, end)内的所有元素副本,无返回值
    c.push_back(elem)      在尾部添加一个elem副本
    c.pop_back()      移除最后一个元素(但不回传)
    c.erase(it)      移除it位置上的元素,返回下一个元素的位置
    c.erase(beg, end)      移除[beg, end)区间内的所有元素,返回下一个元素的位置
    c.resize(num)      将元素数量改为num(如果size()变大了,多出来的新元素都需以default构造函数构造完成)
    c.resize(num, elem)      将元素数量改为num(如果size()变大了,多出来的新元素都是elem的副本)
    c.clear()      将容器清空
    

    转载地址:http://www.cnblogs.com/zxh1210603696/p/3271337.html

  • 相关阅读:
    GB/T 38879-2020 颗粒 粒度分析 彩色图像分析法
    GB/T 30431-2020 实验室气相色谱仪
    GB/T 50165-2020 古建筑木结构维护与加固技术标准
    GB/T 51405-2019 船厂总体设计标准
    GB/T 38922-2020 35kV及以下标准化继电保护装置通用技术要求
    GB/T 38953-2020 微电网继电保护技术规定
    GB/T 38886-2020 高温轴承钢等最新国家标准(2020-6-19)
    pytest_02(使用pychar执行pytest)
    pytest-01(安装pytest及运行规则)
    python-05(关于map函数的使用)
  • 原文地址:https://www.cnblogs.com/LUO257316/p/3287411.html
Copyright © 2011-2022 走看看