C++ 标准模板库(STL)
C++ STL (Standard Template Library标准模板库) 是通用类模板和算法的集合,它提供给程序员一些标准的数据结构的实现如 queues(队列), lists(链表), 和 stacks(栈)等.

C++ STL 提供给程序员以下三类数据结构的实现:

顺序结构 
C++ Vectors 
C++ Lists C++ Double-Ended Queues

容器适配器 
C++ Stacks 
C++ Queues 
C++ Priority Queues 
联合容器 
C++ Bitsets 
C++ Maps 
C++ Multimaps 
C++ Sets 
C++ Multisets 
程序员使用复杂数据结构的最困难的部分已经由STL完成. 如果程序员想使用包含int数据的stack, 他只要写出如下的代码:

stack<int> myStack;
接下来, 他只要简单的调用 push() 和 pop() 函数来操作栈. 借助 C++ 模板的威力, 他可以指定任何的数据类型,不仅仅是int类型. STL stack实现了栈的功能,而不管容纳的是什么数据类型.

C++ Bitsets
C++ Bitsets给程序员提供一种位集合的数据结构。Bitsets使用许多二元操作符,比如逻辑和,或等。

Constructors 创建新bitsets 
Operators 比较和赋值bitsets 
any() 如果有任何一个位被设置就返回true 
count() 返回被设置的位的个数 
flip() 反转bits中的位 
none() 如果没有位被设置则返回true 
reset() 清空所有位 
set() 设置位 
size() 返回可以容纳的位的个数 
test() 返回指定位的状态 
to_string() 返回bitset的字符串表示 
to_ulong() 返回bitset的整数表示

C++ Double Ended Queues(双向队列)
双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样)。

Constructors 创建一个新双向队列 
Operators 比较和赋值双向队列 
assign() 设置双向队列的值 
at() 返回指定的元素 
back() 返回最后一个元素 
begin() 返回指向第一个元素的迭代器 
clear() 删除所有元素 
empty() 返回真如果双向队列为空 
end() 返回指向尾部的迭代器 
erase() 删除一个元素 
front() 返回第一个元素 
get_allocator() 返回双向队列的配置器 
insert() 插入一个元素到双向队列中 
max_size() 返回双向队列能容纳的最大元素个数 
pop_back() 删除尾部的元素 
pop_front() 删除头部的元素 
push_back() 在尾部加入一个元素 
push_front() 在头部加入一个元素 
rbegin() 返回指向尾部的逆向迭代器 
rend() 返回指向头部的逆向迭代器 
resize() 改变双向队列的大小 
size() 返回双向队列中元素的个数 
swap() 和另一个双向队列交换元素

C++ Lists(链表)
Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.

assign() 给list赋值 
back() 返回最后一个元素 
begin() 返回指向第一个元素的迭代器 
clear() 删除所有元素 
empty() 如果list是空的则返回true 
end() 返回末尾的迭代器 
erase() 删除一个元素 
front() 返回第一个元素 
get_allocator() 返回list的配置器 
insert() 插入一个元素到list中 
max_size() 返回list能容纳的最大元素数量 
merge() 合并两个list 
pop_back() 删除最后一个元素 
pop_front() 删除第一个元素 
push_back() 在list的末尾添加一个元素 
push_front() 在list的头部添加一个元素 
rbegin() 返回指向第一个元素的逆向迭代器 
remove() 从list删除元素 
remove_if() 按指定条件删除元素 
rend() 指向list末尾的逆向迭代器 
resize() 改变list的大小 
reverse() 把list的元素倒转 
size() 返回list中的元素个数 
sort() 给list排序 
splice() 合并两个list 
swap() 交换两个list 
unique() 删除list中重复的元素

C++ Maps
C++ Maps是一种关联式容器,包含“关键字/值”对

begin() 返回指向map头部的迭代器 
clear() 删除所有元素 
count() 返回指定元素出现的次数 
empty() 如果map为空则返回true 
end() 返回指向map末尾的迭代器 
equal_range() 返回特殊条目的迭代器对 
erase() 删除一个元素 
find() 查找一个元素 
get_allocator() 返回map的配置器 
insert() 插入元素 
key_comp() 返回比较元素key的函数 
lower_bound() 返回键值>=给定元素的第一个位置 
max_size() 返回可以容纳的最大元素个数 
rbegin() 返回一个指向map尾部的逆向迭代器 
rend() 返回一个指向map头部的逆向迭代器 
size() 返回map中元素的个数 
swap() 交换两个map 
upper_bound() 返回键值>给定元素的第一个位置 
value_comp() 返回比较元素value的函数

C++ Queues(队列)
C++队列是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。

back() 返回最后一个元素 
empty() 如果队列空则返回真 
front() 返回第一个元素 
pop() 删除第一个元素 
push() 在末尾加入一个元素 
size() 返回队列中元素的个数

C++ Sets

集合(Set)是一种包含已排序对象的关联容器

begin()
返回指向第一个元素的迭代器
clear()
清除所有元素
count()
返回某个值元素的个数
empty()
如果集合为空,返回true
end()
返回指向最后一个元素的迭代器
equal_range()
返回集合中与给定值相等的上下限的两个迭代器
erase()
删除集合中的元素
find()
返回一个指向被查找到元素的迭代器
get_allocator()
返回集合的分配器
insert()
在集合中插入元素
lower_bound()
返回指向大于(或等于)某值的第一个元素的迭代器
key_comp()
返回一个用于元素间值比较的函数
max_size()
返回集合能容纳的元素的最大限值
rbegin()
返回指向集合中最后一个元素的反向迭代器
rend()
返回指向集合中第一个元素的反向迭代器
size()
集合中元素的数目
swap()
交换两个集合变量
upper_bound()
返回大于某个值元素的迭代器
value_comp()
返回一个用于比较元素间的值的函数

C++ Stacks(堆栈)
C++ Stack(堆栈)是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。

操作比较和分配堆栈 
empty() 堆栈为空则返回真 
pop() 移除栈顶元素 
push() 在栈顶增加元素 
size() 返回栈中元素数目 
top() 返回栈顶元素

C++ Vectors
Vectors 包含着一系列连续存储的元素,其行为和数组类似。访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线性时间复杂度。
Constructors 构造函数 
Operators 对vector进行赋值或比较 
assign() 对Vector中的元素赋值 
at() 返回指定位置的元素 
back() 返回最末一个元素 
begin() 返回第一个元素的迭代器 
capacity() 返回vector所能容纳的元素数量(在不重新分配内存的情况下) 
clear() 清空所有元素 
empty() 判断Vector是否为空(返回true时为空) 
end() 返回最末元素的迭代器(译注:实指向最末元素的下一个位置) 
erase() 删除指定元素 
front() 返回第一个元素 
get_allocator() 返回vector的内存分配器 
insert() 插入元素到Vector中 
max_size() 返回Vector所能容纳元素的最大数量(上限) 
pop_back() 移除最后一个元素 
push_back() 在Vector最后添加一个元素 
rbegin() 返回Vector尾部的逆迭代器 
rend() 返回Vector起始的逆迭代器 
reserve() 设置Vector最小的元素容纳数量 
resize() 改变Vector元素数量的大小 
size() 返回Vector元素数量的大小 
swap() 交换两个Vector

C++ MultiMaps
C++ Multimaps和maps很相似,但是MultiMaps允许重复的元素。

begin() 返回指向第一个元素的迭代器 
clear() 删除所有元素 
count() 返回一个元素出现的次数 
empty() 如果multimap为空则返回真 
end() 返回一个指向multimap末尾的迭代器 
equal_range() 返回指向元素的key为指定值的迭代器对 
erase() 删除元素 
find() 查找元素 
get_allocator() 返回multimap的配置器 
insert() 插入元素 
key_comp() 返回比较key的函数 
lower_bound() 返回键值>=给定元素的第一个位置 
max_size() 返回可以容纳的最大元素个数 
rbegin() 返回一个指向mulitmap尾部的逆向迭代器 
rend() 返回一个指向multimap头部的逆向迭代器 
size() 返回multimap中元素的个数 
swap() 交换两个multimaps 
upper_bound() 返回键值>给定元素的第一个位置 
value_comp() 返回比较元素value的函数

C++ MultiSets

多元集合(MultiSets)和集合(Sets)相像,只不过支持重复对象。

begin()
返回指向第一个元素的迭代器
clear()
清除所有元素
count()
返回指向某个值元素的个数
empty()
如果集合为空,返回true
end()
返回指向最后一个元素的迭代器
equal_range()
返回集合中与给定值相等的上下限的两个迭代器
erase()
删除集合中的元素
find()
返回一个指向被查找到元素的迭代器
get_allocator()
返回多元集合的分配器
insert()
在集合中插入元素
key_comp()
返回一个用于元素间值比较的函数
lower_bound()
返回指向大于(或等于)某值的第一个元素的迭代器
max_size()
返回集合能容纳的元素的最大限值
rbegin()
返回指向多元集合中最后一个元素的反向迭代器
rend()
返回指向多元集合中第一个元素的反向迭代器
size()
多元集合中元素的数目
swap()
交换两个多元集合变量
upper_bound()
返回一个大于某个值元素的迭代器
value_comp()
返回一个用于比较元素间的值的函数

C++ Priority Queues(优先队列)
C++优先队列类似队列,但是在这个数据结构中的元素按照一定的断言排列有序。

empty() 如果优先队列为空,则返回真 
pop() 删除第一个元素 
push() 加入一个元素 
size() 返回优先队列中拥有的元素的个数 
top() 返回优先队列中有最高优先级的元素

C++ 标准模板库(STL)的更多相关文章

  1. 标准模板库(STL)学习探究之stack

    标准模板库(STL)学习探究之stack queue priority_queue list map/multimap dequeue string

  2. 标准模板库(STL)学习探究之vector容器

    标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...

  3. STL学习系列之一——标准模板库STL介绍

    库是一系列程序组件的集合,他们可以在不同的程序中重复使用.C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出.数学计算等功能. 1. STL介绍 标准模板库STL是当今每 ...

  4. 标准模板库--STL

    标准模板库STL 1.泛型程序设计 C++ 语言的核心优势之一就是便于软件的重用 C++中有两个方面体现重用: 1.面向对象的思想:继承和多态,标准类库 2.泛型程序设计(generic progra ...

  5. C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用

    摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解.即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第一篇,主要针对线性表中的顺序表(动 ...

  6. 实验8 标准模板库STL

    一.实验目的与要求: 了解标准模板库STL中的容器.迭代器.函数对象和算法等基本概念. 掌握STL,并能应用STL解决实际问题. 二.实验过程: 完成实验8标准模板库STL中练习题,见:http:// ...

  7. C++的标准模板库STL中实现的数据结构之链表std::list的分析与使用

    摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解,即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第二篇.主要针对线性表中的链表 ST ...

  8. C++ 标准模板库STL 队列 queue 使用方法与应用介绍

    C++ 标准模板库STL 队列 queue 使用方法与应用介绍 queue queue模板类的定义在<queue>头文件中. 与stack模板类很相似,queue模板类也需要两个模板参数, ...

  9. 【c++】标准模板库STL入门简介与常见用法

    一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部 ...

随机推荐

  1. Google Play Services Library update and missing symbol @integer/google_play_services_version

    转自http://stackoverflow.com/questions/19843784/google-play-services-library-update-and-missing-symbol ...

  2. javascript关键字加亮加连接

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" " http://www.w3.org/TR/html4/str ...

  3. [笔记]线性回归&梯度下降

    一.总述 线性回归算法属于监督学习的一种,主要用于模型为连续函数的数值预测. 过程总得来说就是初步建模后,通过训练集合确定模型参数,得到最终预测函数,此时输入自变量即可得到预测值. 二.基本过程 1. ...

  4. kafka学习(一)-背景及架构设计

    概念和术语 消息,全称为Message,是指在生产者.服务端和消费者之间传输数据. 消息代理:全称为Message Broker,通俗来讲就是指该MQ的服务端或者说服务器. 消息生产者:全称为Mess ...

  5. NYOJ 7-街区最短路径问题(曼哈顿距离)

    街区最短路径问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的间 ...

  6. Codeforces Round #277.5 (Div. 2)-D

    题意:求该死的菱形数目.直接枚举两端的点.平均意义每一个点连接20条边,用邻接表暴力计算中间节点数目,那么中间节点任选两个与两端可组成的菱形数目有r*(r-1)/2. 代码: #include< ...

  7. 227. Basic Calculator

    1. 问题描述 Implement a basic calculator to evaluate a simple expression string. The expression string c ...

  8. 引入css ,使用@import和link的方式

    我们也经常听到有人说要使用link来引入CSS更好,但是你知道为什么吗? 继续往下看 linklink就是把外部CSS与网页连接起来. @importimport文字上与link的区别就是它可以把在一 ...

  9. SQL练习之求解填字游戏

    SELECT * FROM dbo.spt_values

  10. 框架计划随笔 三.EntityFramework在传统事务脚本模式下的使用

    某个朋友问为什么不推首页或者允许评论,我说一直没怎么写博客,也习惯了先随便乱画再开始写文档,担心公开后一些不经意的"呓语“中得出的错误的结论会给别人错误的观点,所以这个系列只是当做熟悉写博客 ...