顺序容器类型:vector、deque、list、forward_list、string、array。

queue(单向队列)底层也是用deque(双端队列)实现的

a.swap(b);

swap(a,b);

可以交换两个容器的数据结构

初始化:

声明时定义

.assign(n,t),以n个t初始化

.assign(b,e),用迭代器b到e初始化

.assign(il),用il表示的数据初始化

添加元素:

参数中有迭代器的,都会返回迭代器。

下面的函数参数中的p表示迭代器。

c.insert(p,args);返回插入的新元素的位置

c.emplace(p,inits);和insert函数功能一样,不过不必构建临时变量,省时间。

同理push_back()和emplace_back(),以及push_front()和emplace_front()。

还可以insert(p,n,t),向p前面插入n个t。

insert(p,b,e),其中b、e都是迭代器,表示向p前面插入b到e表示的内容。

insert(p,il),il表示如{1,2,3}这样的大括号列表,将il表示的数据插入到p前面。

删除元素:

erase ( p),删除迭代器p指代的位置,返回被删除的元素下一个位置的迭代器。

erase(b,e),删除迭代器b到e指代的位置,返回被删除的最后一个元素的下一个迭代器,其实就是e的位置,删除[b,e)半闭半开区间。

链表容器的插入删除操作有些特殊,因为链表不是连续容器。

insert_after()和erase_after()。

管理容量:

.size()

.capacity()

.reserve(n),分配至少容纳n个元素的空间

.shrink_to_fit(),减少capacity到size的大小

.resize(),减少size(注意如果新size小于之前的size,会截取掉尾部的数据!)

查找

string有自己的find系成员函数。

所有容器都可以使用的:

find(b,e,T),在b到e区间内寻找T

find_first_of(b,e,T),类似

fidn_if(b,e,F),F是布尔函数,在b到e区间寻找满足F的第一个迭代器

string的成员函数:

string.find(args)

string.rfind(),倒着找第一个(即找最后一个)

string.find_first_of(字符串q),查找在字符串中首次出现的q中的任意字符

stirng.find_last_of()

string.find_first_not_of()

string.find_last_not_of()

其中args可以是(字符+pos=0),(字符串,pos=0),(字符数组头指针,pos,n)【表示从string的pos位置开始找[头指针,头指针+n)的数据 】。

比较

string.compare(s2),返回0表示相同,1表示字典序大于s2,-1表示字典序小于s2。

STL顺序容器用法自我总结的更多相关文章

  1. STL顺序容器的基本操作

    容器主要分为:顺序容器和关联容器 顺序容器和关联容器,顺序容器主要有:vector.list.deque等.其中vector表示一段连续的内存地址,基于数组的实现,list表示非连续的内存,基于链表实 ...

  2. STL顺序容器【vector】【deque】【list】

    我们都知道,stl在集装箱船分为两类,订购集装箱和相关的容器. 顺序容器有三种即动态数组vector,双端队列deque,以及链表list (对csdn的文字排版严重吐槽.写好的版发表了就变了) 一: ...

  3. C++ STL 顺序容器--list + 关联容器

    list 双向链表,可以双向遍历,既指向前驱节点,又指向后继但不能随机访问任意元素,可动态增加或者减少元素,内存管理自动完成,增加任何元素都不会使迭代器失效, 删除元素时,除了指向当前被删元素的迭代器 ...

  4. STL常用容器用法

    -1. 本文章中所有函数原型均为C++98的标准. 通用的操作 //遍历容器--以vector,map为例 vector<int> vt; map<int,int> mp; f ...

  5. STL之顺序容器

    顺序容器: vector:数组 list:链表 deque:双端数组 顺序容器适配器: stack:堆栈 queue:队列 priority_queue:优先级队列 deque是一个动态数组 dequ ...

  6. C++——STL中三种顺序容器的简要差别

    C++ STL 提供了3个顺序容器 :vector, deque, list Vector动态数组.支持高速訪问:list双向链表,支持高速插入和删除. vector 中的元素是顺序存放的.所以随机訪 ...

  7. STL之如何选择顺序容器

    一.顺序容器的分类 顺序容器:vector向量.list链表.deque双端队列: 优先级最高的是vector向量,它的速度比较快,优点最多: 在程序设计中,容器可以切换: #include < ...

  8. c++复习:STL之容器

    1 STL的string 1 String概念 string是STL的字符串类型,通常用来表示字符串.而在使用string之前,字符串通常是用char*表示的.string与char*都可以用来表示字 ...

  9. C++-STL:vector用法总结

    目录 简介 用法 1. 头文件 2. vector的声明及初始化 3. vector基本操作 简介 vector,是同一类型的对象的集合,这一集合可看作可变大小的数组,是顺序容器的一种.相比于数组,应 ...

随机推荐

  1. Docker最全教程——从理论到实战(十八)

    前言 VS Code是一个年轻的编辑器,但是确实是非常犀利.通过本篇,老司机带你使用VS Code玩转Docker——相信阅读本篇之后,无论是初学者还是老手,都可以非常方便的玩转Docker了!所谓是 ...

  2. Docker最全教程——从理论到实战(十六)

    前言 与其他语言相比,Go非常值得推荐和学习,真香!为什么?主要是可以直接编译成机器代码(性能优越,体积非常小,可达10来M,见实践教程图片)而且设计良好,上手门槛低.本篇主要侧重于讲解了Go语言的优 ...

  3. Vue.js_devtools_5.1.0.zip【需要的可自行下载】

    点击链接下载: Vue.js_devtools_5.1.0.zip

  4. ASP.NET Core 2.1 中的 HttpClientFactory (Part 4) 整合Polly实现瞬时故障处理

    原文:https://www.stevejgordon.co.uk/httpclientfactory-using-polly-for-transient-fault-handling发表于:2018 ...

  5. 三分钟学会.NET Core Jwt 策略授权认证

    一.前言 大家好我又回来了,前几天讲过一个关于Jwt的身份验证最简单的案例,但是功能还是不够强大,不适用于真正的项目,是的,在真正面对复杂而又苛刻的客户中,我们会不知所措,就现在需要将认证授权这一块也 ...

  6. Extreme Learning Machine

    Extreme Learning Machine 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. ELM 2004年南洋理工大学黄广斌提出了ELM ...

  7. JavaScript-事件处理程序

    DOM事件流: 1.事件冒泡 2.事件捕获 DOM2事件流: 1.事件捕获阶段 2.处于目标阶段 3.事件冒泡阶段 DOM3事件 事件处理程序: 1.HTML事件处理程序: 例一:<input ...

  8. tomcat常见状态码

  9. C++面向对象编程实例

    实例一.四位运算符操作 main.cpp. #include <iostream> #include "operator_1.h" #include <stdio ...

  10. 你所不知道的Hello World[C++实现]

    要说OIer界内最简单的程序,那恐怕非Hello World莫属了, 那么这篇文章就介绍如何写Hello World(被打). 最简单的一种实现: #include <iostream> ...