vector学习笔记
来源:互联网 发布:设置斐讯k1路由器mac 编辑:程序博客网 时间:2024/05/21 22:21
一、vector的能力
vector将其元素复制到内部的dynamic array中。元素之间总是存在着某种顺序。所以vector是一
种有序群集,vector支持随机存取,因此只要知道位置,你可以在常数时间内存取任何一个元素。
vector的迭代器是随机存取迭代器,对任何一个STL算法都可以奏效。
二、vector的函数操作
1、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>();销毁所有元素,并释放内存
2、vector的非变动性操作
c.size();返回当前的元素数量
c.empty();判断大小是否为0
c.max_size();返回可容纳的元素最大数量
capacity();返回重新分配空间前所能容纳的元素最大数量
reserve();如果容量不足,扩大之
c1==c2;
c1!=c2;
c1<c2;
c1>c2;
c1<=c2;
c1>=c2;判断c1、c2的大小关系
3、vector的赋值操作
c1=c2;将c2的全部元素赋值给c1
c.assign(n,elem);赋值n个elem给c
c.assign(beg,end);将区间[beg,end]的元素赋值给c
c1.swap(c2);将c1、c2的元素互换
swap(c1,c2);同上
4、直接用来存取vector元素的各项操作
c.at(idx);返回索引idx所标示的元素,如果idx越界,抛出out_of_range
c[idx];返回索引idx所标示的元素,不进行范围检查
c.front();返回第一个元素,不检查第一个元素是否存在
c.back();返回最后一个元素,不检查最后一个元素是否存在
5、vector迭代器的相关函数
c.begin();返回一个随机存取迭代器,指向第一元素
c.end();返回一个随机存取迭代器,指向最后一个元素的下一个位置
c.rbegin();返回一个逆向迭代器,指向逆向迭代的第一个元素
c.rend();返回一个逆向迭代器,指向逆向迭代的最后元素的下一个位置
6、vector的安装、移出相关操作
c.insert(pos,elem);在pos位置插入一个elem副本,并返回新元素位置
c.insert(pos,n,elem);在pos位置插入n个elem元素副本,无返回值
c.insert(pos,beg,end);在pos位置插入[beg,end]内所有元素的副本,无返回值
c.push_back(elem);在尾部添加一个elem副本
c.pop_back();移出最后一个元素(但不回传)
c.erase(pos);移出pos位置上的元素,返回下一元素的位置
c.erase(beg,end);移出[beg,end]区间内的所有元素,返回下一元素的位置
c.resize(num);将元素数量改为num(如果size()变大了,多出来的新元素都需以default构造函数构造完成)
c.resize(num,elem);将元素数量改为num(如果size()变大了,多出来的新元素都是elem的副本)
c.clear();移出所有元素,将容器清空
三、class vector<bool>
vector<bool>的特殊操作
c.flip();将所有bool元素取反值,亦即求补码
m[idx].flip();将索引idx的bit元素取反值
m[idx]=val;令索引idx的bit元素值为val(指定单一bit)
m[idx1]=m[idx2];令索引idx1的bit元素为索引idx2的bit元素的值
- Vector学习笔记
- vector 学习笔记
- STL学习笔记【vector】
- Vector学习笔记
- vector学习笔记
- 【STL】vector学习笔记
- vector的学习笔记
- vector 学习笔记
- Fisher vector学习笔记
- Vector学习笔记
- C++vector学习笔记
- Fisher vector学习笔记
- Fisher vector学习笔记
- 【STL 学习笔记】vector
- Fisher vector学习笔记
- vector学习笔记
- Vector学习笔记
- STL vector学习笔记
- 量化和优化Android设备的用户体验
- JAX-RS
- wince修改界面字体
- oracle system权限
- IOS开发:使用animateWithDuration简单地控制页面切换效果
- vector学习笔记
- 响应式Web设计帮助移动终端访问网站
- Android异步下载网络图片(其一:Handler)
- Java编程中“为了性能”尽量要做到的一些地方
- UI设计准则
- 如何解决Cannot modify header information...问题?
- JSP的优势与劣势浅析
- Android异步下载网络图片(其二:AsyncTask)
- window.location.reload;刷新