您的位置:首页 > 编程语言 > C语言/C++

【汇总,不定期更新】c++实用的STL

2017-09-17 21:27 288 查看

不定长数组vector

定义

不定长数组就是可以在程序中随意更改数组长度的一种STL。

优点

正如字面上理解,不定长数组,就是长度没有确定的数组,这样可以最大限度地节约空间,而且作为一个独立的类型,vector还有自己特色操作。

如何定义

怎么定义一个int类型的vector:

vector<int>a;


如何取用元素

vector类型和数组非常的相像,支持下标,例如a


基本操作

int len=a.size();取用a的长度;类似于数组的sizeof();//对于所有的容器都生效

a.resize(100);给a分配100个空间,下标是0~99;

a.push_back(234);向a的尾部添加一个元素234;

a.pop_back();a的末尾删掉一个元素;

a.clear();清空a;

a.empty();判断a是不是空的;//对于所有的stl容器都生效

a.begin()是一个头指针;a.end()是超尾指针(左闭右开区间);

vector排序

和一般的数组一样,vector也可以用系统内置快排sort

不过写法不太一样。

下面给个例子,加入要给a这个int类型的vector排序:

sort(a.begin(),a.end());


这样就完成了对a的排序。(默认从小到大)

vector不定长内部实现

如果你没有给vector定义多长的空间,或者你开的空间过小,但是你仍然在用push_back,会不会有溢出风险?答案是不会。如果你存了n个元素,它的空间是二的幂,而且>=n,<=2n;这玩意儿类似于倍增的思想,如果溢出就开多一倍的空间。

队列queue

队列没有clear操作

队列的clear操作应自己手写。

while(q.size())q.pop();


这样啊就可以实现队列q的清空操作。

一些操作

a.size()

a.clear()

a.empty()

a.pop()

a.front()

a.push()

deque双向队列

q.push_front()

q.push_back()

q.pop_fr

q.pop

set元素不重复的集合

struct poi
{
double x,y;
int id;
poi(){};
poi(double x_,double y_)
{
x=x_,y=y_;
}
};
bool operator<(poi a,poi b)
{
return a.x+eps<b.x||a.x<b.x+eps&&a.y<b.y;
}
set<rec>s;


multiset多重集

lower_bound()

upper_bound()

map映射

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: