容器(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. 使用idea合并 dev分支合并到test分支

    这里展示将dev分支合并到test分支首先切换到test分支 按下图所示操作

  2. Flink - [07] 容错机制

    题记部分 一.一致性检查点   Flink故障恢复机制的核心,就是应用状态的一致性检查点.有状态流应用的一致性检查点,其实就是所有任务的状态,在某个时间点的一份拷贝(一份快照):这个时间点,应该是所有 ...

  3. c# virtual 关键字 虚方法

    1.简单的说,虚方法就是可以被子类重写的方法,如果子类重写了虚方法,那么运行时将使用重写后的逻辑,如果没有重写,则使用父类中虚方法的逻辑 class Program { static void Mai ...

  4. 使用电阻网络实现的vga驱动电路,fpga驱动vga显示器验证,代替gm7123芯片

    之前驱动vga,要么是直接使用fpga管脚直接驱动,颜色为8原色 使用线缆 vs,hs,r,g,b一共五根线,三原色要么是0要么是1,所以色彩最多8种,rgb组合 若要实现真彩色驱动,如rgb888, ...

  5. Vulnhub-Hackme

    一.靶机搭建 选择扫描虚拟机 选择路径即可 二.信息收集 靶机信息 Name: hackme: 1 Date release: 18 Jul 2019 难度:初级,目标是通过web漏洞获得有限的权限访 ...

  6. # 50 个最常被问到的 Selenium 面试问题和答案

    Q #1) 什么是自动化测试? 自动化测试或测试自动化是自动化手动过程以测试被测应用程序/系统的过程.自动化测试涉及使用单独的测试工具,该工具可让您创建可以重复执行且不需要任何手动干预的测试脚本. Q ...

  7. verilator书写C++版模块testbench

    默认顶层模型名称为top,环境名称为contextp const std::unique_ptr<VerilatedContext> contextp{new VerilatedConte ...

  8. 记vue修改数组属性,dom不发生变化的问题

    目录: 目录 目录: 开篇 正确的姿势 为什么 $set 开篇 今天在写vue的时候,出现了一个以前可能没遇到的问题.我利用一个数组记录列表下按钮的启用.禁用状态,但我点击某个列表项按钮后,会修改当前 ...

  9. rot-偏移,ascii,md5爆破

    题目: 破解下面的密文: 83 89 78 84 45 86 96 45 115 121 110 116 136 132 132 132 108 128 117 118 134 110 123 111 ...

  10. Proxmox ve(Pve) 安装windows server

    1.安装proxmox ve点击直达 官网地址 下载下来如果下载速度太慢 可以去安装个IDM https://www.52pojie.cn/thread-1013874-1-1.html 然后需要制作 ...