STL标准模板库

STL标准模板库

STL组件包括:容器containers, 迭代器iterators, 仿函数functors, 算法algorithms

容器containers用来管理对象的集合

迭代器iterators用来在对象的群集中遍历所有元素,这个群集或许是容器也或许是容器的一部分

算法algorithms用来处理群集内的元素,搜索,排序,修改,使用元素

 

容器分两大类:序列式容器与关联式容器

STL提供了三个定义好的序列式容器,vector, deque, list

STL提供了四个关联容器,set, multiset, map, multimap

STL提供了三个容器配接器:stacks, queues, priority queues

 

verctor容器特点,利用索引直接存取任何一个元素,在尾部插入元素或移除元素均非常快速,头文件<verctor>

#include <iostream>

#include <verctor>

using namespace std;

int main(){

verctor<int> coll;

for (i = 1; i <= 6; ++i){

    coll.push_back(i);

}

for (i = 0; i < coll.size(); ++i){

    cout << coll[i] << " ";

}

cout << endl;

}

 

deque容器特点,在头部或尾部安插元素都非常快速,头文件<deque>

#include <iostream>

#include <deque>

using namespace std;

int main(){

deque<float> coll;

for (int i = 1; i <= 6; ++i){

    coll.push_front(i * 1.1);

}

for (int i = 0; i< coll.size(); ++i){

    cout << coll[i] << " ";

}

cout << endl;

}

因为使用在头部安插元素,所以输出结果为 6.6 5.5 4.4 3.3 2.2 1.1

 

list双向链表,在中间安插元素非常快速,头文件<list>

#include <iostream>

#include <list>

using namespace std;

int main(){

list<char> coll;

for ( char c = 'a'; c < 'z' ; ++c){

    coll.push_front(c);

}

while (! coll.empty()){

    cout << coll.front() << " ";

    coll.pop_front();

}

cout << endl;

}

 

关联容器分四种

set的内部元素依据其值自动排序,每个元素值只能出现一次,不允许重复

multiset跟set相同,只不过它允许重复元素

map是键值对,每一个元素都有一个键,是排序的基础,每个键只能出现一次,不允许重复

multimap跟map相同,只不过允许重复键,可用来当作字典

 

容器配接器有三种

stack容器对元素采取LIFO(后进先出)的策略

queue容器采用FIFO(先进先出)的策略

priority queue容器中的元素可以拥有不同的优先级,所谓优先级就是程序员提供的排序准则,默认为operator<,升序

 

迭代器是可遍历容器内全部或部分元素的对象

operator* 获取当前位置上的元素

operator++ 当前元素前进至下一个元素

operator== 和 operator!= 判断两个元素是否指向同一个位置

operator= 为迭代器赋值

 

所有容器类别都提供有一些成员函数

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

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

#include <iostream>

#include <list>

using namespace std;

int main(){

list<char> coll;

if ( char c = 'a'; c < 'z' ; ++c){

    coll.push_back(c);

}

list<char>::const_ierator pos;

for (pos = coll.begin(); pos != coll.end(); ++pos){

   cout << *pos << " ";

}

cout << endl;

}

 

任何一种容器都定义有两种迭代器

ierator为读/写模式

const_ierator为只读模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值