STL有7中容器

分别为:

  vector  向量    <vector>(头文件)  随机访问容器、顺序容器

  deque  双端队列  <deque>       随机访问容器、顺序容器

  list     列表    <list>          可逆容器、顺序容器

  set     集合    <set>         可逆容器、关联容器

  multiset 多重集合   <set>           可逆容器、关联容器

  map   映射     <map>         可逆容器、关联容器

  multimap 多重映射       <map>         可逆容器、关联容器

设S表示一种容器类型(如:vector<int>),s1、s2都是S类型的实例,容器都具有如下基本功能

  S s1  容器的默认构造函数,用于构造一个没有任何元素的空容器。

  s1 op s2  对两容器之间的元素按字典序进行比较,op表示==、!=、<、<=、>、>=任何一个。

  s1.begin()  返回指向s1第一个元素的迭代器

  s1.end()  返回指向s1最后一个元素的下一个位置的迭代器。

  s1.empty()  表示s1容器是否为空,返回一个布尔值。

  s1.size()  返回s1容器中元素的个数。

  s1.swap(s2)  将s1容器和s2容器的内容交换。

与类型为S的容器相关联的迭代器的类型

S::iterator  (与S相关的普通迭代器类型,迭代器指向的元素类型为T)

S::const_iterator  (表示与S相关的常迭代器类型,迭代器指向的元素类型为const T,通过这样的迭代器只能读取元素,不能改写元素

按照容器中元素的组织方式,容器可分为: “顺序容器”(相同类型元素以严格线性形式组织)  和  “关联容器”(可根据一组索引快速提取元素)。

按照与容器所关联的迭代器类型,又有“可逆容器”这一概念。可逆容器又有“随机访问容器”的子概念。

每一个可逆容器都有逆向迭代器

s1.rbegin()  返回指向容器最后一个元素的逆向迭代器。

s1.rend()  返回容器的第一个元素的前一个位置的逆向迭代器。

逆向迭代器的类型:S::reverse_iterator  和 S::const_reverse_iterator

逆向迭代器的“++”运算 被映射为普通迭代器的“--”,“--”运算 被映射为普通迭代器的“++”。

一个迭代器和它的逆向迭代器可以相互转换

逆向迭代器类型都有一个构造函数,用来构造一个迭代器的逆向迭代器:

  如p1是S::iterator迭代器,那么S::reverse_iterator(p1)将得到p1的逆向迭代器

逆向迭代器有一个成员函数base,用来得到构造了此逆向迭代器的那个迭代器。

  如r1是通过S::reverse_iterator(p1)构造的迭代器,那么,r1.base()==p1.

r1.begin()、r1.end()、r1.rbegin()、r1.rend()之间的关系:

  s1.rbegin()==S::reverse_iterator(s1.end()),    s1.rbegin().base()==s1.end();

  s1.rend()==S::reverse_iterator(s1.begin()),    s1.rend().base==s1.begin()

随机访问容器提供的迭代器是“随机访问迭代器”,它可以直接通过一个整数来访问容器中的指定元素。

STL容器基本功能与分类的更多相关文章

  1. Sword STL容器分类介绍

    标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器slist和rope.slist是一个单 ...

  2. STL容器的适用情况

     转自http://hsw625728.blog.163.com/blog/static/3957072820091116114655254/ ly; mso-default-props:yes; m ...

  3. 关于STL容器

    容器: 概念:如果把数据看做物体,容器就是放置这些物体的器物,因为其内部结构不同,数据摆放的方式不同,取用的方式也不同,我们把他们抽象成不同的模板类,使用时去实例化它 分类: 序列容器.关联容器.容器 ...

  4. STL 容器的概念

    STL 容器的概念 在实际的开发过程中,数据结构本身的重要性不会逊于操作于数据结构的算法的重要性,当程序中存在着对时间要求很高的部分时,数据结构的选择就显得更加重要. 经典的数据结构数量有限,但是我们 ...

  5. C++中STL容器的比较

    基本参考 https://blog.csdn.net/qq_14898543/article/details/51381642 容器特性: vector:典型的序列容器,C++标准严格要求次容器的实现 ...

  6. STL容器的本质

    http://blog.sina.com.cn/s/blog_4d3a41f40100eof0.html 最近在学习unordered_map里面的散列函数和相等函数怎么写.学习过程中看到了一个好帖子 ...

  7. C++ STL 容器之栈的使用

    Stack 栈是种先进后出的容器,C++中使用STL容器Stack<T> 完美封装了栈的常用功能. 下面来个demo 学习下使用栈的使用. //引入IO流头文件 #include<i ...

  8. C++ STL容器总结

    1.    STL 容器 1.    按种类划分 顺序容器( sequence containers):是一种各元素之间有顺序关系的线性表,是一种线性结构的可序群集.顺序性容器中的每个元素均有固定的位 ...

  9. STL容器底层数据结构的实现

    C++ STL 的实现: 1.vector      底层数据结构为数组 ,支持快速随机访问   2.list            底层数据结构为双向链表,支持快速增删   3.deque     ...

随机推荐

  1. P4101 [HEOI2014]人人尽说江南好

    题目描述 小 Z 是一个不折不扣的 ZRP(Zealot Round-game Player,回合制游戏狂热玩家),最近他 想起了小时候在江南玩过的一个游戏. 在过去,人们是要边玩游戏边填词的,比如这 ...

  2. [CF1110H]Modest Substrings

    description CodeForces 定义一个正整数\(x\)是合适的当且仅当\(l\le x\le r\),其中\(l,r\le 10^{800}\). 找到一个长度为\(n\)的数字串,使 ...

  3. 【Learning】常系数线性齐次递推

    给定数列前k项\(h_0...h_{k-1}\),其后的项满足:\(h_i=\sum_{i=1}^kh_{i-j}a_i\),其中\(a_1...a_k\)是给定的系数,求\(h_n\) 数据范围小的 ...

  4. 【IOI 2018】Highway 高速公路收费

    这是一道极好的图论题,虽然我一开始只会做$18$分,后来会做$51$分,看着题解想了好久才会做(吐槽官方题解:永远只有一句话),但这的确是一道好题,值得思考,也能启发思维. 如果要讲这道题,还是要从部 ...

  5. 洛谷 P1972 [SDOI2009]HH的项链 解题报告

    P1972 [SDOI2009]HH的项链 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断 ...

  6. 洛谷 P2598 [ZJOI2009]狼和羊的故事 解题报告

    P2598 [ZJOI2009]狼和羊的故事 题目描述 "狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......" \(Orez\)听到这首歌, ...

  7. 理解 OAuth 2.0

    理解OAuth 2.0 http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 一.简介 OAuth是一个关于授权(authorization)的开 ...

  8. loj2542「PKUWC2018」随机游走

    题目描述 给定一棵 nn 个结点的树,你从点 xx 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 QQ 次询问,每次询问给定一个集合 SS,求如果从 xx 出发一直随机游走,直到点集 SS ...

  9. 团体程序设计天梯赛 L1-011. A-B

    读入的是字符串,数组大小至少为字符串长度+1 #include <stdio.h> #include <stdlib.h> #include <string.h> ...

  10. (二)C语言文本流和二进制流的区别

    转至:http://www.cnblogs.com/xiangzi888/archive/2011/11/10/2244336.html 一.首先回答,什么是文件,流 一个文件通常就是磁盘上的一段命名 ...