C++中STL常见用法总结

一、什么是STL?

(Standard Template Library,STL)标准模板库,所谓模板,是指不必预先制定类型的函数或类。可以借助STL提供的高效算法来管理数据。STL中体现了泛型化程序设计的思想,引入了诸多新的名词,比如像容器(container),算法(algorithmn),迭代子(iterator)等。

二、STL内容介绍

  1. 容器(Container),是一种数据结构,如list,vector,和deques,以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器;
  2. 迭代器(Iterator),提供了访问容器中对象的方法,类似于指针进行操作。
  3. 算法(Algorithm),是用来操作容器中的数据的模板函数。例如用sort()来对一个vector中的数据进行排序,也可以对数据进行排序。
  4. 仿函数(Function object)
  5. 迭代适配器(Adaptor)
  6. 空间配制器(allocator)

2.1容器

STL中的容器有队列容器和关联容器,容器适配器(congtainer adapters:stack,queue,priority queue),位集(bit_set),串包(string_package)等等。

1、序列容器,每个元素都有固定位置,如vector、deque、list等:

(1)Vectors:将元素置于一个动态数组中加以管理,可以随机存取元素(用索引直接存取),数组尾部添加或移除元素非常快速。但是在中部或头部安插元素比较费时;
(2)Deques:是“double-ended queue”的缩写,可以随机存取元素(用索引直接存取),数组头部和尾部添加或移除元素都非常快速。但是在中部或头部安插元素比较费时;
(3)Lists:双向链表,不提供随机存取(按顺序走到需存取的元素,O(n)),在任何位置上执行插入或删除动作都非常迅速,内部只需调整一下指针;

2、关联式容器,如set、multiset、map、multimap等;

(1)Sets/Multisets:内部的元素依据其值自动排序,Set内的相同数值的元素只能出现一次,Multisets内可包含多个数值相同的元素,内部由二叉树实现,便于查找;
(2)Maps/Multimaps:Map的元素是成对的键值/实值,内部的元素依据其值自动排序,Map内的相同数值的元素只能出现一次,Multimaps内可包含多个数值相同的元素,内部由二叉树实现,便于查找;

2.2常见容器的基本使用

1、vector的成员函数示例及使用

函数名 功能 复杂度
size( ) 返回向量的元素数 O(1)
push_back(x) 在向量末尾添加元素x O(1)
pop_back( ) 删除向量的最后一个元素 O(1)
begin( ) 返回指向向量开头的迭代器 O(1)
end( ) 返回指向向量末尾的迭代器 O(1)
insert(p, x) 在向量的位置p处插入元素x O(n)
erase( p ) 删除向量中位置p的元素 O(n)
clear( ) 删除向量中所有元素 O(n)

2、list的成员函数实例及使用

函数名 功能 复杂度
size( ) 返回表的元素数 O(1)
push_front(x) 在表的开头添加元素x O(1)
push_back(x) 在表的末尾添加元素x O(1)
pop_front( ) 删除位于表开头的元素 O(1)
pop_back( ) 删除位于表末尾元素 O(1)
begin( ) 返回指向表开头的迭代器 O(1)
end( ) 返回指向表末尾的迭代器 O(1)
insert(p, x) 在表的位置p处插入元素x O(1)
erase( p ) 删除表中位置p的元素 O(1)
clear( ) 删除表中所有元素 O(n)

3、queue的成员函数实例及使用

函数名 功能 复杂度
size( ) 返回队列的元素数 O(1)
front( ) 返回队头的元素 O(1)
pop( ) 从队列中取出并删除元素 O(1)
push(x) 向队列中添加元素x O(1)
empty( ) 在队列为空时返回true O(1)

4、stack的成员函数实例及使用

函数名 功能 复杂度
size( ) 返回栈的元素数 O(1)
top( ) 返回栈顶的元素 O(1)
pop( ) 从栈中取出并删除元素 O(1)
push(x) 向栈中添加元素x O(1)
empty( ) 在栈为空时返回true O(1)
发布了54 篇原创文章 · 获赞 17 · 访问量 9210

猜你喜欢

转载自blog.csdn.net/qq_41979513/article/details/98901994