STL中的容器

Posted xiwen2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL中的容器相关的知识,希望对你有一定的参考价值。

一、什么是STL
STL是standart template library,标准模板库
是HP实验室开发的一系列软件的统称,从根本上说,它是一些容器和算法的集合,它是世界上很多最聪明的程序员多年的杰作
STL是标准化的组件,不用重新开发,可以直接使用,它是C++的一部分,不需要额外安装

二、STL中有什么
1、容器
存储类对象的盒子
线性容器:vector、list
容器适配器:queue、stack、double queue
关系型容器:set、map
2、算法
#include<algorithm>
find sort
3、迭代器
迭代器是一个类,它实现于容器模板中
它的对象是一个指向容器中的一个元素,它实现了*运算符,给人的感觉它好像是个指针
从容器中获取到迭代器是一个半开半闭区间,[start,end)

三、vector容器
1、特点:
a、占用的是连续的内存
b、动态的管理内存
c、支持随机访问(at,[])
d、支持按迭代器进行插入和删除(insert,erase)
但只有在末尾添加和删除时效率才最高
e、支持随机迭代:it=it+4;

2、定义:
vector<类型> a;//创建容器
vector<类型> a(10);//创建容器并设置容量为10,并把元素初始化为0
vector<类型> a(10,1);//创建容器并设置容量为10,并设置初始值

3、返回值
v[i]、v.at(i) v.front()、v.back() 这种方式返回的是元素的引用

4、成员函数
assign
size_type capacity();//获取容器在扩充之后的容量

iterator erase()
//元素被删除或插入后,之前获取的迭代器就失效了,需要重新获取

void resize()
//改变容器的大小,可以调大(构造),也可以调小(析构)

5、支持的运算符
==、!=、>=、<=、>、<
比较两个容器中元素的数量,顺序,值是否相等
容器中存放的对象的运算符==运算符必须要重载

6、排序、查找
在vector容器中是没有排序和查找的成员函数的
在List容器中由于这是链式的存储结构所以不能使用全局的sort函数,必须自己实现
在使用sort排序时,待排序的对象必须实现出<的重载(或者给sort提供比较函数)

7、自定义类使用容器时需要实现的成员有
无参构造、拷贝构造
== <

四、set容器
集合容器,里面的元素不会重复,它会自动排重。
使用时要实现它的==运算符。

multiset 允许有重复的数据。

pair equal_range( const key_type &key );
查找值等于key的元素信息,返回两人个迭代器。

iterator lower_bound( const key_type &key );
查找大于等于key的第一个元素

iterator upper_bound( const key_type &key );
查找大于key的第一个元素

五、队列
单向队列:
back、empty、front、pop、push、size
双向队列:

六、List
是一种链式存储结构,不能使用算法库中的排序,只能调用自带的排序函数。

void unique();
void unique( BinPred pr );
删除重复的元素。

void splice( iterator pos, list &lst );
void splice( iterator pos, list &lst, iterator del );
void splice( iterator pos, list &lst, iterator start, iterator end );
从指定的位置开始合并两个链表

void merge( list &lst );
void merge( list &lst, Comp compfunction );
直接合并两人个链表

七、map是一种关联式的容器
它底层以采用的是红黑树(有序+平衡)进行存储的。
一个键值(主键)只能对应一个值。

multimap 多重映射
键值可以重复

八、priority_queue优先队列
元素在入队后就已经排序好了,最大值在上面。
对元素排序依靠的是 < 运算符。








 































































































以上是关于STL中的容器的主要内容,如果未能解决你的问题,请参考以下文章

STL容器学习总结

小白学习C++ 教程二十一C++ 中的STL容器Arrays和vector

小白学习C++ 教程二十一C++ 中的STL容器Arrays和vector

STL

STL 容器中的 const 指针

STL 序列容器