容器库概述

容器类型上的操作形成了一种层次:

  • 某些操作是所有容器类型都提供的,如下表所示

一般来说,每个容器都定义在一个头文件中,文件名与类型名相同。即,deque定义在头文件deque中,list定义在头文件list中,以此类推。容器均定义为模板类。例如对于vector,我们必须提供额外信息来生成特定的容器类型。对大多数,但不是所有容器,我们还需要额外提供元素类型信息:

list<Sales_data> //保存Sales_data对象的list

deque<double> //保存double的deque

对容器可以保存的元素类型的限制

顺序容器几乎可以保存任意类型的元素。特别是,我们可以定义一个容器,其元素的类型是另一个容器。这种容器的定义与任何其他容器类型完全一样:在尖括号中指定元素类型(此种情况下,是另一种容器类型):

vector<vector<string>> lines; //vector的vector

此处lines是一个vector,其元素类型是string的vector

容器操作

类型别名

iterator          此容器类型的迭代器类型

const_iterator          可以读取元素,但不能修改元素的迭代器类型

size_type         无符号整数类型,足够保存此种容器类型最大可能容器的大小

difference_type      带符号整数类型,足够保存两个迭代器之间的距离

value_type        元素类型

reference          元素的左值类型,与value_type&含义相同

const_reference       元素的const左值类型(即,const value_type&)

构造函数

C c;                               默认构造函数,构造空容器

C c1(c2);         构造c2的拷贝c1

C c(b,e)           构造c,将迭代器b和e指定的范围内的元素拷贝到c(array不支持)

C c{a,b,c...};       列表初始化

赋值与swap

c1=c2            将c1中的元素替换为c2中元素

c1={a,b,c....}       将c1中的元素替换为列表中元素(不适用array)

a.swap(b)        交换a和b

swap(a,b)

大小

c.size()           c中元素的数目(不支持forward_list)

c.max_size()          c可保存的最大元素数目

c.empty()          若c中存储了元素,返回false,否则返回true

添加/删除元素(不适用array)

注:在不同容器中,这些操作的接口都不同

c.insert(args)         将args中的元素拷贝进c

c.emplace(inits)       使用inits构造c中的一个元素

c.erase(args)        删除args指定的元素

c.clear()            删除c中的所有元素,返回void

关系运算符

==,!=         所有容器都支持相等(不相等)操作

<,<=,>,>=        关系运算符(无序关联容器不支持)

获取迭代器

c.begin(),c.end()        返回指向c的首元素和尾元素之后位置的迭代器

c.cbegin(),c.cend()     返回const _iterator

反向容器的额外成员(不支持forward_list)

reverse_iterator      按逆序寻址元素的迭代器

const_reverse_iterator  不能修改元素的逆序迭代器

c.rbegin(),c.rend()    返回指向c的尾元素和首元素之前位置的迭代器

c.crbegin(),c.crend()   返回const_reverse_iterator

容器库概述

时间: 2024-10-05 17:23:46

容器库概述的相关文章

第4章 C++STL泛型库概述

/* 第二篇 C++STL泛化技术基础 第4章 C++STL泛型库概述 4.1 C++STL的发展历程 4.2 C++STL的各种实现版本 4.3 C++STL的Visual C++编译 4.4 C++STL的体系结构 4.5 C++STL存在的一些问题 4.6 本章小结 第二篇 C++STL泛化技术基础 第4章 C++STL泛型库概述 4.1 C++STL的发展历程 4.2 C++STL的各种实现版本 4.2.1 HP STL 4.2.2 SGI STL 4.2.3 STLport 4.2.4

程序设计语言-标准库概述

1 认识标准库 没有任何一个重要程序只用某种赤裸裸的程序设计语言写出的:首先总要开发出一组支持库,这也形成了进一步工作的基础. 2 第一个程序 #include<iostream>  //指编译器包含位于iostream里的标准流I/O功能的声明 int main() //定义一个main()函数,该函数没有参数,也不做任何事情 { std::cout<<"hello,world!\n"; //字符串文字量"hello,world!\n"将被

【转】Struts1.x系列教程(4):标签库概述与安装

转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/15/251411.html Struts的整个视图层(就是MVC模式中的View层)是由Struts的定制标签(或者称为定制动作)和客户端代码(Javascript.HTML等)实现的.这些Struts标签被写在JSP页面中,用于生成客户端代码.进行逻辑判断等工作,使用Struts标签可以尽量

C++标准库概述 [转]

C++标准库的所有头文件都没有扩展名. C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能.<cname>形式的标准头文件[<complex>例外]其内容与ISO标准C包含的name.h头文件相同,但容纳了C++扩展的功能.在<cname>形式标准的头文件中,与宏相关的名称在全局作用域中定义,其他名称在std命名空间中声明.在C++中还可以使用name.h形式的标准C库头文件名. C++标准库的内容分为10类: C1.语言支持 :   C2.输入

java容器简要概述

java中集合框架的概述 java集合类主要用于保存对象的. 常用的集合对象: Colletion接口,Collection接口是集合中的顶层容器,表示的是一组对象,它的下面有两个子接口List接口和Set接口. List接口:元素有序,可以重复. ArrayList:底层以数组进行存储元素,存储在ArrayList中的元素是有序的,当容量不足时可以自动扩容. LinkedList:底层以链表进行存储元素,插入和删除效率高. Set接口:元素无序,不可以重复. HashSet:底层是基于散列表实

【C】 06 - 标准库概述

任何程序都会有一些通用的功能需求,对这些需求的实现组成了库.它可以提高程序的复用性.健壮性和可移植性,这也是模块化设计的体现.C规范定义了一些通用接口库,这里只作概述性介绍,具体细节当然还是要查阅规范. 为了提高效率,C的很多库函数会同时有一个宏定义的版本,所以传递参数时尽量使用没有副作用的表达式,以免发生错误.若不想使用宏版本的函数,可以采用三个方法:(1)先undef宏:(2)函数名用括号括起来:(3)不include头文件. // method 1 #include <stdlib.h>

C++标准库概述

一.C++标准库的主要组件: 1.标准C库 2.I/O流技术(对标准输入输出设备称为标准I/O,对在外磁盘上文件的输入输出称为文件I/O,对内存中指定的字符串存储空间的输入输出称为串I/O) 3.string类模版 4.容器(vector.list.queue.stack.deque.map.set和bitset) 5.算法 6.对国际化的支持 7.对数字处理的支持 8.诊断支持(3中报错方式:C的断言.错误号.例外) 二.I/O流技术 C++为实现数据的输入输出定义了一个庞大的类库,它包括的类

python17:基础库概述

这里对python的基础库做一个简要概述,包括每个模块的基本功能和常用操作.更详细的信息请参考Python库参考. 操作系统接口 操作系统接口对应os模块,用于与操作系统交互: >>> import os >>> os.getcwd() # 返回当前的工作目录 'C:\\Python34' >>> os.chdir('/server/accesslogs') # 改变当前工作目录 >>> os.system('mkdir today'

mysql-数据库概述2

一.版本介绍 社区版:免费,个人使用,不能商业用,出了问题自己解决,没有技术支持 企业版:收费,商业用,偏重于基本服务,cpu个数在1-4之间,费用4万/年:超过4个,7万/年 集群版:收费,商业用,偏重于集群设定,cpu个数在1-4之间,费用7万/年:超过4个,14万/年 二.yum安装 mysql:主要提供管理工具 mysql-server:提供基本模块和功能 三.启动数据库 加载的内容以及数据库下的文件 说明:ibdata1.ib_logfile0.ib_logfile1都是数据库索引文件