容器(container)用于存放数据的类模板。可变长数组、链表、平衡二叉树等数据结构在STL中都被实现为容器。

在使用容器时,即将容器类模型实例化为容器类,会指明容器中存放的元素是什么类型。

容器可以分为两大类:顺序容器关联容器

顺序容器

顺序容器有可变长动态数组vector、双端队列deque、双向链表list

之所以被称为顺序容器,是因为元素在容器中的位置同元素的值无关,即容器是不排序的。

关联容器

关联容器有以下四种:set、multiset、map、multimap。关联容器内的元素是排序的。插入元素时,容器会按一定的排序规则将元素放到适当的位置,因此插入元素时不能指定位置

默认情况下,关联容器中的元素是从小到大排序(或按关键字从小到大排序),而且用<运算符比较元素或关键字大小,也正是因为排好序的,关联容器在查找时具有很好的性能。

成员函数

所有的容器都有以下两个成员函数:

  • int size():返回容器对象元素的个数
  • bool empty():判断容器对象是否为空
  • begin():返回指向容器中第一个元素的迭代器
  • end():返回指向容器最后一个元素后面的位置的迭代器
  • rbegin():返回指向容器中最后一个元素的反向迭代器
  • rend():返回指向容器中第一个元素前面的位置的反向迭代器
  • erase(...):从容器中删除一个或几个元素。
  • clear():从容器中删除所有元素

    如果一个容器是空的,则begin()和end()的返回值是相等的,rbegin()和rend()的返回值也是相等的

顺序容器还有以下常用成员函数:

  • front():返回容器中第一个元素的引用
  • back():返回容器中最后一个元素的引用
  • push_back():在容器末尾添加元素
  • pop_back():删除容器末尾的元素
  • insert(...):插入一个或多个元素

参考:http://c.biancheng.net/view/331.html

C++ 容器(STL容器)的更多相关文章

  1. STL容器

    啦啦啦,今天听啦高年级学长讲的STL容器啦,发现有好多东西还是有必要记载的,毕竟学长是身经百战的,他在参加各种比赛的时候积累的经验可不是一天两天就能学来的,那个可是炒鸡有价值的啊,啊啊啊啊啊 #inc ...

  2. c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例

    c++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器.set/multiset会根据待定的排序准则,自动将元素排序.两者不同在于前者不允许元素重复,而后者允许. 1 ...

  3. STL容器删除元素的陷阱

    今天看Scott Meyers大师的stl的用法,看到了我前段时间犯的一个错误,发现我写的代码和他提到错误代码几乎一模一样,有关stl容器删除元素的问题,错误的代码如下:std::vector< ...

  4. 【转】c++中Vector等STL容器的自定义排序

    如果要自己定义STL容器的元素类最好满足STL容器对元素的要求    必须要求:     1.Copy构造函数     2.赋值=操作符     3.能够销毁对象的析构函数    另外:     1. ...

  5. GDB打印STL容器内容

    GDB调试不能打印stl容器内容,下载此文件,将之保存为~/.gdbinit就可以使用打印命令了. 打印list用plist命令,打印vector用pvector,依此类推. (gdb) pvecto ...

  6. STL容器迭代器失效分析

    连续内存序列容器(vector, string, deque) 对于连续内存序列STL容器,例如vector,string,deque,删除当前iterator会使得后面所有的iterator都失效, ...

  7. STL容器的适用情况

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

  8. STL容器的遍历删除

    STL容器的遍历删除 今天在对截包程序的HashTable中加入计时机制时,碰到这个问题.对hash_map中的每个项加入时间后,用查询函数遍历hash_map,以删除掉那些在表存留时间比某个阈值长的 ...

  9. STL容器与配接器

    STL容器包括顺序容器.关联容器.无序关联容器 STL配接器包括容器配接器.函数配接器 顺序容器: vector                             行为类似于数组,但可以根据要求 ...

  10. STL容器的本质

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

随机推荐

  1. FreeModbus源码详解(转)

    学习转载原文链接: https://blog.csdn.net/golf_research/article/details/52240739 https://blog.csdn.net/u014748 ...

  2. 1 前端知识学习-初始Web和Web标准

    0️⃣ 初始Web和Web标准 Web ​ Web(World Wide Web) 即全球广域网.也成为万维网.我们常说的Web端就是网页端. 网页 ​ 网页是构成网站的基本元素.网页主要由文字.图像 ...

  3. 初探本地DeepSeek VL + Typescript + FFMPEG:提取视频关键帧分析内容

    初探本地DeepSeek VL + Typescript + FFMPEG:提取视频关键帧分析内容 前言 随着人工智能和计算机视觉技术的发展,利用图像识别来分析视频内容已经成为现实.本文的主要目标是: ...

  4. mysql 查询结果为空时值时执行后面的sql语句

    sql server支持变量所以一般使用方法如下: DECLARE @Val varchar(50) select @Val = param_value where t_param where par ...

  5. mysql 无数据插入,有数据更新

    mysql的语法与sql server有很多不同,sql server执行插入更新时可以update后使用if判断返回的@@rowcount值,然后确定是否插入,mysql在语句中无法使用类似sql  ...

  6. mysql导出指定数据或部份数据的方法

    https://www.jb51.net/article/47525.htm 1.新建一个表,比如new-table,包含所要导出的字段的名称,比如a,b,c2.使用insert into new-t ...

  7. Golang 1.16新特性-embed包及其使用

    embed 是什么 embed是在Go 1.16中新加入的包.它通过//go:embed指令,可以在编译阶段将静态资源文件打包进编译好的程序中,并提供访问这些文件的能力. 为什么需要 embed 包 ...

  8. Ansible创建逻辑卷

    环境: 受控主机清单文件: [dev] 192.168.10.129 [all:vars] ansible_ssh_user=root ansible_ssh_pass=123 磁盘: 受控主机需要存 ...

  9. linux查看分区命令和根分区扩容方法

    df 查看文件系统磁盘空间的使用情况df [选项].[FILE]...当我们指定文件参数FILE时,将会显示该文件所在系统的信息-a 显示出所有的文件系统,包括大小只有0 blocks的文件系统:-h ...

  10. 国内四大骨干网与十大ISP服务商

    1.骨干网 几台计算机连接起来,互相可以看到其他人的文件,这叫局域网,整个城市的计算机都连接起来,就是城域网,把城市之间连接起来的网就叫骨干网.这些骨干网是国家批准的可以直接和国外连接的互联网.其他有 ...