()使用vector之前必须包含头文件<vector>:#include<vector>

 ()namespace std{
template <class T,
class Allocator = allocator<T> >
class vector;
}
vector的元素可以是任意类型T,但必须具备assignable和copyable两个性质。第二个template参数可有可无,用来定义内存模型,缺省的模型是C++标准程序库提供的allocator。 ()在末端附加或删除元素时,vector的性能相当好。可是如果你在前端或中部安插或删除元素,性能就不怎么样了,因为操作点之后的每一个元素都必须移动到另一个位置,而每一次移动都得调用assignment操作符 ()vector性能优异的秘籍之一就是配置比其所容纳的元素所需更多的内存。当vector申请的内存被用尽时,vector会重新申请一片新的内存,通常新申请的内存会是原来内存的两倍.一旦内存重新配置,和vector元素相关的所有references,pointers,iterators都会失效 ()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迭代器持续有效,除非发生两种情况:()使用者在一个较小的索引位置上安插或移除元素()由于容量的变化而引起内存的重新分配 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() 将容器清空

STL中vector小结的更多相关文章

  1. C++的STL中vector内存分配方法的简单探索

    STL中vector什么时候会自动分配内存,又是怎么分配的呢? 环境:Linux  CentOS 5.2 1.代码 #include <vector> #include <stdio ...

  2. STL中vector、list、deque和map的区别

    1 vector     向量 相当于一个数组    在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capac ...

  3. 【转】STL中vector、list、deque和map的区别

    1.vector 向量 相当于一个数组 在内存中分配一块连续的内容空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacity()函数 ...

  4. C++ STL中vector(向量容器)使用简单介绍

    原文:http://www.seacha.com/article.php/knowledge/cbase/2013/0903/2205.html C++ vector(向量容器)是一个线性顺序结构.相 ...

  5. STL中vector的赋值,遍历,查找,删除,自定义排序——sort,push_back,find,erase

    今天学习网络编程,那个程序中利用了STL中的sort,push_back,erase,自己没有接触过,今天学习一下,写了一个简单的学习程序.编译环境是VC6.0         这个程序使用了vect ...

  6. STL中 vector 和 list 一些特性

    STL中的vector特点是: 其容量在需要时可以自动分配,本质上是数组形式的存储方式.即在索引可以在常数时间内完成.缺点是在插入或者删除一项时,需要线性时间.但是在尾部插入或者删除,是常数时间的. ...

  7. [转]STL中vector转数组(实际是数组的指针)

    感谢:http://topic.csdn.net/t/20050429/20/3976956.html 感谢:http://yzyanchao.blogbus.com/logs/47796444.ht ...

  8. STL中priority_queue小结

    (1)为了运用priority_queue,你必须包含头文件<queue>:#include<queue> (2)在头文件中priority_queue定义如下: namesp ...

  9. C/C++知识要点2——STL中Vector、Map、Set容器的实现原理

    1.Vector是顺序容器.是一个动态数组.支持随机存取.插入.删除.查找等操作,在内存中是一块连续的空间.在原有空间不够情况下自己主动分配空间.添加为原来的两倍.vector随机存取效率高,可是在v ...

随机推荐

  1. JSTL核心标签库使用

    JSTL是什么? java standard taglib(java标准标签库). 标签是什么? sun公司制订的一种技术规范,用来将jsp页面中的java代码使用类似于html当中的标记来替换 的一 ...

  2. AngularJS的date 过滤器

    date 过滤器可以将日期格式化成需要的格式.AngularJS中内置了几种日期格式,如果没有指定使用任何格式,默认会采用 mediumDate 格式,下面的例子中展示了这个格式. ·下面是内置的支持 ...

  3. dom4j 读取xml

    package core.util; import java.io.File; import java.util.Iterator; import java.util.List; import org ...

  4. struts2从2.2.3升级到2.3.15.1步骤

    1. 删除以下jar包 asm-3.1.jar asm-commons-3.1.jar commons-beanutils-1.7.0.jar commons-fileupload-1.2.2.jar ...

  5. Python:将utf-8格式的文件转换成gbk格式的文件

    需求:将utf-8格式的文件转换成gbk格式的文件 实现代码如下: def ReadFile(filePath,encoding="utf-8"): with codecs.ope ...

  6. Javascript:常用函数封装

    //cookie function setCookie(name, value, iDay) { if(iDay!==false) { var oDate=new Date(); oDate.setD ...

  7. c# 字体安装

    [DllImport("kernel32.dll", SetLastError = true)] static extern int WriteProfileString(stri ...

  8. mac 命令行 安装 需要管理员 权限

    Please try running this command again as root/Administrator. sudo chown -R $USER /usr/local

  9. 内存的分配VS回收&构造函数VS析构函数

    之前有一个问题一直困扰着我,就是一个变量出了作用域,我以为这个变量的内存就被回收了,其实不是这样的,昨天问了一个高手,才豁然开朗,自己在看相关代码的反汇编代码,才知道原来真是这样就.这个问题,我想简单 ...

  10. 面包板入门电子制作(class1)视频 全套30集高清

    面包板入门电子制作(class1)套件(30集高清) 本套件以电子制作中最基础的元器件在面包板上搭建电路,用启发性的视频教学方式,使学习者熟悉电子电路基础.发挥想像力.在创新设计和制作中学会独立设计和 ...