STL综述(开篇)

STL (Standard Template Library,标准模板类库)。

特点:

1.提供了常用的数据结构模板类和丰富的操作函数。

2.所有组件都是用模板方式定义的,全面支持泛型,强调的石让数据的结构和算法独立于其类型。


STL三大件:容器(container)、算法(algorithm)、迭代器(iterator)


一、容器

顺序容器:vector(向量)、list(链表)、deque(双端队列)

关联容器:set(集合)/multiset(多重集合)、map(映射)/multimap(多重映射)

适配器容器:stack(栈)、queue(队列)、priority_queue(优先级队列)

哈希容器:hash_map(hash_multimap、hash_set、hash_multiset)


1.vector(向量)

vector相当于动态数组,可以从尾部快速的插入和删除元素,快速随机访问元素,在序列中间插入和删除时,需要移动后面的元素。

主要函数:

max_size():最大元素个数

size():实际个数

resize(n):调整容器大小

empty():判断是否为空

at():返回指定位置元素

front():获取第一个元素

back():获取最后一个元素

assign():给元素赋值

insert():插入

push_back():尾部插入一个元素

pop_back():删除尾部元素

clear():删除所有元素

begin():正向迭代,返回第一个元素的位置

end():正向迭代,返回最后一个元素的位置

rbegin():反向迭代,返回最后一个元素的位置

rend():反向迭代,返回第一个元素的位置

小例子:

#include

#include

#include

using namespace std;

bool cmp(int &x,int &y) {

return x>y;

}

int main() {

int a[10]={2,4,1,6,8,12,67,45,89,456};

vector vec(a,a+10);

printf("size:%d\n",vec.size());

printf("正向输出vec:");

vector::iterator it,it1;

for(it=vec.begin();it!=vec.end();it++) {

printf("%d\t",*it);

}

printf("\n");

int x=6;

it1 = find(vec.begin(),vec.end(),x);

if(it1!=vec.end()) {

printf("find it = %d\n",*it1);

}else {

printf("Not find it.\n");

}

printf("递减排序vec:\n");

sort(vec.begin(),vec.end(),cmp);

vector::reverse_iterator rit;

printf("反向输出vec:");

for(rit = vec.rbegin();rit!=vec.rend();++rit) {

printf("%d\t",*rit);

}

printf("\n");

return 0;

}

你可能感兴趣的:(STL综述(开篇))