STL初步
2016-05-04 16:41
169 查看
STL初步
1.排序和检索lower_bound函数 查找大于或等于X的第一个位置
eg.
int p=lower_bound(a,a+n,x)-a;//在排序的数组a中寻找X的位置
unique去重函数
在STL中unique函数是一个去重函数, unique的功能是去除相邻的重复元素(只保留一个),其实它并不真正把重复的元素删除,是把重复的元素移到后面去了,然后依然保存到了原数组中,然后 返回去重后最后一个元素的地址,因为unique去除的是相邻的重复元素,所以一般用之前都会要排一下序。
eg
#include<stdio.h> #include<algorithm> using namespace std; int a[100]; int main() { int n; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&a[i]); } sort(a,a+n); int p= unique(a,a+n)-a;//返回去重后最后一个元素的地址 for(int i=0;i<p;i++) { printf("%d ",a[i]); } }
2. 不定长数组:vector
vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.
用法:
1.文件包含: 首先在程序开头处加上#include<vector>以包含所需要的类文件vector 还有一定要加上using namespace std; 2.变量声明: 声明一个int向量以替代一维的数组:vector <int> a;(等于声明了一个int数组a[],大小没有指定,可以动态的向里面添加删除)。 用vector代替二维数组.其实只要声明一个一维数组向量即可,而一个数组的名字其实代表的是它的首地址,所以只要声明一个地址的向量即可,即:vector <int *> a或vector <vector <int> > a 或vector <int>a[i] 3.具体的用法以及函数调用: 1.push_back 在数组的最后添加一个数据 2.pop_back 去掉数组的最后一个数据 3.at 得到编号位置的数据 4.begin 得到数组头的指针 5.end 得到数组的最后一个单元+1的指针 6.front 得到数组头的引用 7.back 得到数组的最后一个单元的引用 8.max_size 得到vector最大可以是多大 9.capacity 当前vector分配的大小 10.size 当前使用数据的大小 11.resize 改变当前使用数据的大小,如果它比当前使用 的大,者填充默认值 12.reserve 改变当前vecotr所分配空间的大小 13.erase 删除指针指向的数据项 14.clear 清空当前的vector 15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1) 16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1) 17.empty 判断vector是否为空 18.swap 与另一个vector交换数据 详细的函数实现功能:其中`vector <int> c` c.clear() 移除容器中所有数据。 c.empty() 判断容器是否为空。 c.erase(pos) 删除pos位置的数据 c.erase(beg,end) 删除[beg,end)区间的数据 c.front() 传回第一个数据。 c.insert(pos,elem) 在pos位置插入一个elem拷贝 c.pop_back() 删除最后一个数据。 c.push_back(elem) 在尾部加入一个数据。 c.resize(num) 重新设置该容器的大小 c.size() 回容器中实际数据的个数。 c.begin() 返回指向容器第一个元素的迭代器 c.end() 返回指向容器最后一个元素的迭代器
相关文章推荐
- 动态规划—Problem K
- 手机摇一摇的功能
- POJ 3159 Candies、
- Visible Trees(hdu2841)
- 受限玻尔兹曼机相关的学习资料
- john ubuntu14.04 subl 安装
- java基础学习总结——java环境变量配置
- 集合与数组互换
- ActiveMQ 入门Nodejs版
- Ubantu 下安装openssh-server中遇到的一些问题及解决方案
- sizeof 与strlen的区别
- Linux下chkconfig命令详解
- 【AWS+DaoCloud的应用分享】BootDev如何利用docker在AWS实现超快速自动伸缩
- 数据结构学习笔记06排序 (冒泡、插入、希尔、堆排序、归并排序)
- oracle 截取字符(substr),检索字符位置(instr)
- C++ list
- 【LeetCode-233】Number of Digit One
- Android View如何绘制
- OC3
- C ADT 的实现