STL 之 vector的应用
关于vector
vector是C++提供的一个容器,它是一个能够存放任意类型的动态数组,可以随时增加和压缩数据。
使用vector时需要注意以下几点:
1. 如果要表示的向量长度较长(需要为向量内部保存很多数),容易导致内存泄漏,而且效率会很低;
2. vector作为函数的参数或者返回值时,需要注意它的写法;
double Distance(vector<int>&a, vector<int>&b) 其中的“&”绝对不能少
引入头文件
#include <vector>
vector常用操作
1. 创建向量
vector<int> vec;
2. 向量尾部插入元素
vec.push_back(item);
3. 向量尾部弹出元素
vec.pop_back();
4. 访问向量元素
(1)下标访问
for(int i = ; i < vec.size(); i++) {
cout << vec[i] << endl;
}
(2)迭代器访问
vector<int>::iterator it;
for(it = vec.begin(); it != vec.end(); it++) {
cout << *it << endl;
}
5. 插入元素
vec.insert(vec.begin() + i, item); //在向量的第i+1的位置插入元素item
6. 删除元素
vec.erase(vec.begin() + i); //删除向量的第i+1个元素
今天在用vector.erase()的时候,发现总是不能把应该erase掉的东西erase干净
原因在于:每次删除一个元素后,都会跳过下一个元素,继续执行。仔细一想,才发现执行下一次for循环时i++了,所以就跳过了一个元素。因此在erase掉一个元素后,应该让 i-- 才行
7. 向量的大小
vec.size();
8. 其他
vec.front(); //返回向量的第一个元素
vec.back(); //返回向量的最后一个元素 vec.empty(); //检测向量是否为空
vec.clear(); //清空向量
vector常用算法
以下算法使用时都需要包含头文件
#include <algorithm>
1. 翻转元素
reverse(vec.begin(), vec.end()); //将向量中的元素翻转,即逆序排列
2. 排序
sort(vec.begin(), vec.end()); //将元素以升序排列(由小到大)
//定义排序比较函数
bool compare(const int &a, const int &b) {
return a > b;
}
sort(vec.begin(), vec.end(), compare); //将元素以降序排列(由大到小)
3. 查找
find(vec.begin(), vec.end(), ); //查找向量中的值为10的元素
4. 复制
copy(vec.begin(), vec.end(), vec_1.begin() + ); //把vec向量中所有元素全部复制到vec_1向量中,从vec_1.begin() + 1 的位置开始复制,覆盖掉原有的元素
STL 之 vector的应用的更多相关文章
- C++的STL中vector内存分配方法的简单探索
STL中vector什么时候会自动分配内存,又是怎么分配的呢? 环境:Linux CentOS 5.2 1.代码 #include <vector> #include <stdio ...
- 带你深入理解STL之Vector容器
C++内置了数组的类型,在使用数组的时候,必须指定数组的长度,一旦配置了就不能改变了,通常我们的做法是:尽量配置一个大的空间,以免不够用,这样做的缺点是比较浪费空间,预估空间不当会引起很多不便. ST ...
- C++STL之Vector向量详解,用法和例子 一起学习 一起加油
C++ STL之vector用法总结 1 ...
- STL中vector、list、deque和map的区别
1 vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capac ...
- 【转】STL中vector、list、deque和map的区别
1.vector 向量 相当于一个数组 在内存中分配一块连续的内容空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacity()函数 ...
- C++-STL:vector用法总结
目录 简介 用法 1. 头文件 2. vector的声明及初始化 3. vector基本操作 简介 vector,是同一类型的对象的集合,这一集合可看作可变大小的数组,是顺序容器的一种.相比于数组,应 ...
- 从零开始写STL—容器—vector
从0开始写STL-容器-vector vector又称为动态数组,那么动态体现在哪里?vector和一般的数组又有什么区别?vector中各个函数的实现原理是怎样的,我们怎样使用会更高效? 以上内容我 ...
- 【C++】STL,vector容器操作
C++内置的数组支持容器的机制,但是它不支持容器抽象的语义.要解决此问题我们自己实现这样的类.在标准C++中,用容器向量(vector)实现.容器向量也是一个类模板.标准库vector类型使用需要的头 ...
- STL之vector常用函数笔记
STL之vector常用函数笔记 学会一些常用的vector就足够去刷acm的题了 ps:for(auto x:b) cout<<x<<" ";是基于范围的 ...
- [转]STL中vector转数组(实际是数组的指针)
感谢:http://topic.csdn.net/t/20050429/20/3976956.html 感谢:http://yzyanchao.blogbus.com/logs/47796444.ht ...
随机推荐
- 多线程 GCD队列组
// DYFViewController.m // 623-08-队列组 // // Created by dyf on 14-6-23. // Copyright (c) 2014年 ___ ...
- STP-3-收敛到新的STP拓扑
事实上,即使拓扑已经稳定,STP也从未停止工作,对每个收到的BPDU,交换机都会重新计算自己对于根桥,RP,DP的选择.在稳定的拓扑中,交换机收到的BPDU不变,因此对这些BPDU的处理会一遍一遍产生 ...
- Hive_Hive体系结构
元数据: HQL的执行过程 ORACEL 执行计划,Hive 类似. 无索引时,生成全表扫描执行计划,执行全表扫描. 创建索引后,重新生成SQL语句执行计划,基于索引扫描,提高查询效率.
- python __new__ __init__ 区别
参数 __new__的第一个占位参数是class对象 __init__的第一个占位参数是class的实例对象 其他的参数应一致 作用 __new__ 用来创建实例,在返回的实例上执行__init__, ...
- Java之file操作
File类既可以表示文件,也可以表示为文件夹 文件的创建.删除.重命名 1.文件的创建 File file=new File("new Hello.txt");//当前工程目录下 ...
- python flask学习(1)与Git基础操作
今天从简单的flask开始完成Flask web开发的学习.今天学习了Git和GitHub项目的提交. Git尝试提交过程中出现了"Could not read from remote re ...
- node项目 Error: Cannot find module 'mongoose'
这是因为你部署的项目没有添加mongoose,使用 在自己项目的根目录下:npm install mongoose --save
- jq或zp监听input的value改变问题
$(document).on('input propertychange','#citySelectorValue',function () { alert("s"); } 以上J ...
- Vue全家桶开发笔记
state 中没有属性的情况下,新增属性不会触发mutations修改. 例: commit('change', { c: 3, d: 4, }); state: { test: { a: 1, b: ...
- mysql实现计数器
本文转自:https://blog.csdn.net/stevendbaguo/article/details/70889449 如果是在非常高的并发之下,还是建议用内存数据库redis去实现计数的功 ...