容器库概述

简介: 容器类型上的操作形成了一种层次: 某些操作是所有容器类型都提供的,如下表所示 一般来说,每个容器都定义在一个头文件中,文件名与类型名相同。即,deque定义在头文件deque中,list定义在头文件list中,以此类推。

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

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

一般来说,每个容器都定义在一个头文件中,文件名与类型名相同。即,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

相关文章
|
Kubernetes 调度 微服务
Kubernetes(k8s)容器编排概述
Kubernetes(k8s)容器编排概述
544 0
|
Prometheus Kubernetes 监控
揭秘Kubernetes的秘密武器库:十大工具让你的容器编排如虎添翼!探索这些神秘而强大的工具,它们将如何彻底改变你的Kubernetes体验?
【8月更文挑战第19天】在容器世界里,Kubernetes是部署与管理容器化应用的首选平台。为了增强其功能,本文精选了十大必备工具:Helm简化复杂应用部署;Prometheus监控系统与应用指标;Grafana提供数据可视化;Fluentd统一日志管理;Envoy实现服务间通信与控制;Calico确保网络连接安全;CoreDNS提升DNS服务性能;Velero保障数据安全与迁移;Argo Workflows执行复杂工作流;Istio强化服务网格功能。这些工具覆盖部署、监控、日志等多个方面,助力提升Kubernetes的效率与稳定性。
330 3
|
Linux 调度 Docker
容器网络概述
【8月更文挑战第7天】容器就是 Container,而 Container 的另一个意思是集装箱。其实容器的思想就是要变成软件交付的集装箱。集装箱的特点,一是打包,二是标准。
|
Linux 调度 Docker
容器网络概述
【9月更文挑战第9天】容器技术利用如命名空间(namespace)和控制组(cgroup)等技术创建隔离环境,实现资源限制与独立运行。命名空间避免命名冲突,cgroup则能对CPU、内存等资源进行限制。容器状态可通过镜像保存并标准化,确保在任何环境中都能复现相同状态。
|
Ubuntu NoSQL Shell
容器常用操作命令概述
【8月更文挑战第28天】容器镜像可被视为一个“样板间”,它将进程运行所需的文件系统、依赖库、环境变量及启动参数等全部信息整合打包。
|
存储 C++ 索引
C++标准库容器的使用
C++标准库容器的使用
240 1
|
存储 运维 分布式计算
分布式云容器平台ACK One概述
分布式云容器平台ACK One概述
262 2
|
存储 算法 C++
详解C++中的STL(标准模板库)容器
【4月更文挑战第30天】C++ STL容器包括序列容器(如`vector`、`list`、`deque`、`forward_list`、`array`和`string`)、关联容器(如`set`、`multiset`、`map`和`multimap`)和容器适配器(如`stack`、`queue`和`priority_queue`)。它们为动态数组、链表、栈、队列、集合和映射等数据结构提供了高效实现。选择合适的容器类型可优化性能,满足不同编程需求。
|
C++ 容器
C++ STL标准库 《map容器详解》
C++ STL标准库 《map容器详解》
190 0
|
存储 C++ 容器
C++ STL标准库 《map容器详解》
C++ STL标准库 《map容器详解》
412 0