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 ...
随机推荐
- C 语言实例 - 计算 int, float, double 和 char 字节大小
C 语言实例 - 计算 int, float, double 和 char 字节大小 C 语言实例 C 语言实例 使用 sizeof 操作符计算int, float, double 和 char四种变 ...
- hdu 6299 Balanced Sequence( 2018 Multi-University Training Contest 1 )
#include <stdio.h> #include <iostream> #include <cstdlib> #include <cmath> # ...
- js截取文件名不带后缀
利用正则表达式是匹配后缀名 一般文件后缀都为.xxx,也就是说从尾部匹配的话首先是字母,接着应该有一个. 那么我们就开始写正则表达式 利用在线工具 方便我们编写边测试 一般都是小写字母,所以我们用[a ...
- java中数据的存放位置
引用自java编程思想四----2.2.1 程序运行时,我们最好对数据保存到什么地方做到心中有数.特别要注意的是内存的分配.有六个地方都可以保存数据:(1) 寄存器.这是最快的保存区域,因为它位于和其 ...
- python异常之ModuleNotFoundError: No module named 'test01inner02'
当我们使用sys.path.append(args) 指令向程序中导入模块时其实本次append操作只是在内存中完成的,如果要永久性的添加需要修改环境变量. 我们发现当我们使用print(sys.pa ...
- django_view操作数据库
1 create def add_area(request): area = Area.objects.create(name='commom',description='a commom area' ...
- 关于@Mapper和@Repository的一点小理解
参考博客:https://blog.csdn.net/lalioCAT/article/details/51803461 如果在接口上@Mapper,然后再在 xml中的namespace指向mapp ...
- 142. O(1)时间检测2的幂次
用 O(1) 时间检测整数 n 是否是 2 的幂次. 您在真实的面试中是否遇到过这个题? Yes 样例 n=4,返回 true; n=5,返回 false. class Solution { publ ...
- linux学习-Linux系统启动过程
linux系统启动过程 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行init. 系统初始化. 建立终端 . 用户登录系统. 内核引导 电源开机后,首 ...
- C# winwordcontrol控件编程
C# word控件WinWordControl可创建.编辑.保存word. 1.使用代码直接创建word文件,同时可以添加页眉.内容.图片及表格,示例代码: /// <summary> ...