Vector的小知识点
预留容量的两类方式:
1、不调用默认的构造函数
vector<int> v;
v.push_back(111);
v.reserve(20);
std::copy(v.begin(), v.end(), ostream_iterator<int>(cout," "));//只能打印出111;
2、调用默认构造函数
vector<int> v(20);
std::copy(v.begin(), v.end(), ostream_iterator<int>(cout," "));//打印出20个零
vector<int> v;
v.resize(20);
std::copy(v.begin(), v.end(), ostream_iterator<int>(cout," "));//打印出20个零
缩小vector的容量:
template<class T>
void shrinkCapacity(vector<T>& v)
{
vector<T> temp(v); //copy elements into a new vector
v.swap(temp); //swap internal vector data //swap具有常数时间复杂度,通过交换一些指针完成。
}
vector<int> v(10);
v.reserve(100);
cout <<"size:"<< v.size()<<"capacity:" << v.capacity() << endl; //10 100
shrinkCapacity(v);
cout << "size:" << v.size() << "capacity:" << v.capacity() << endl; //10 10
将vector当作一般array使用:
只要你需要一个类型为T的数组,就可以采用vector<T>。
vector<char> c;
c.resize(20); //初始化为‘\0’
strcpy(&c[0], "Hello world");
cout << &c[0] << endl;
循环语句内删除值为x的元素:
vector<int> ve;
ve.push_back(1);
ve.push_back(2);
ve.push_back(2);
ve.push_back(3);
ve.push_back(4);
ve.push_back(4);
vector<int>::iterator iter;
for (iter = ve.begin(); iter != ve.end();)
{
if (*iter == 4)
iter = ve.erase(iter);
else
++iter;
}
cout << "*************" << endl;
copy(ve.begin(), ve.end(), ostream_iterator<int>(cout, " "));
erase返回的是下个元素的位置,内存移动后即是删除元素的位置。
insert返回的是插入元素的位置,即原来当前位置的元素及以后元素全部往后移动,当前位置插入新元素。
最简便删除某个值为x的元素:
ve.erase(remove(ve.begin(), ve.end(), x),ve.end());
Vector的小知识点的更多相关文章
- 刚接触Linux,菜鸟必备的小知识点(一)
身为一个将要大四的学生,而且还是学计算机的没有接触过linux简直是羞愧难当.这个假期做了一个软件测试员,必须要熟悉linux的操作,所以对于我这个菜鸟我也就说几点比较重要的小知识点吧. 第一.cd指 ...
- Java学习过程中的总结的小知识点(长期更新)
Java学习过程中的总结的小知识点 (主要是自己不会的知识和容易搞错的东西) 计算某个程序运行的时间 long stime=System.currentTimeMillis(); copy3(file ...
- 【转】HTML5的小知识点小集合
html5的小知识点小集合 html5知识 1. Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于<h ...
- AngularJS的小知识点
小知识点:$scope和$rootScope (1)每次使用ngController指令,都会调用控制器的创建函数,创建出一个控制器对象. (2)每次创建一个控制器对象,AngularJS都会创建一个 ...
- js中关于value的一个小知识点(value既是属性也是变量)
今天在学习input的value值时,发现这么一个小知识点,以前理解不太透彻. [1]以下这种情况是常见情况,会弹出“测试内容” <input type="button" v ...
- html5的小知识点小集合
html5的小知识点小集合 html5知识 1. Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于< ...
- [BS] 小知识点总结-05
[BS] 小知识点总结-05 1. 不论UIWindow的rootViewController是navC.tabBarC还是VC,也不管modalVC和rootVC中间隔着多少个VC,但是modal出 ...
- 一个关于echo的小知识点
一个关于echo的小知识点 echo一个布尔值时,如果是true,输出1,而如果是false,将什么都不输出! 网上搜的一个解释: 对于数字类型来说,false 确实 是 0, 而对strin ...
- easyui中的combobox小知识点~~
一直使用的easyui中,一些不为人知的小知识点,与君共勉: 1.combobox设置高度:使用panelHeight属性: 2.combobox本身自带“自动补全”功能,但是在浏览器中是有限制的,在 ...
随机推荐
- Appium 使用小结
前言: Appium 是通过模拟用户操作进行自动化操控手机端第三方库.通常使用场景多用于回归测试.在产品教成熟,页面改动较少后,通过ui自动化进行回归操作测试. Appium 本身使用很简单,java ...
- iOS 去除警告 看我就够了
你是不是看着开发过程中出现的一堆的警告会心情一阵烦躁,别烦躁了,看完此文章,消除警告的小尾巴. 一.SVN 操作导致的警告 1.svn删除文件后报错 ”xx“is missing from worki ...
- svn忽略文件后缀
*.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store Release ...
- I.MX6 Ar8031 device register hacking
/***************************************************************************** * I.MX6 Ar8031 device ...
- opencv-python教程学习系列2-读取/显示/保存图像
前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍图像的读取.显示以及保存,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: ...
- GPA
原题: GPA Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 51Nod:独木舟问题(贪心)
n个人,已知每个人体重,独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人.显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟? 输入 第一行包含两个正 ...
- Django Rest FrameWork 全部API
Django Rest FrameWork .Requests 请求 客服端发送给服务器的请求 .Responses 响应 rest框架支持响应不同格式的内容 .Views 视图 base基础类视图 ...
- 杭电 KazaQ's Socks
KazaQ wears socks everyday. At the beginning, he has n pairs of socks numbered from 1 to n in his cl ...
- 在windows下制作mac os x的启动安装U盘
前几天有幸用了下Macbook pro,可在给它装win 7系统时,无知而又手贱地在windows系统下分区了:( 然后再重启就找不到Mac os x,只有win 7了.可进win 7也不正常,直接给 ...