STL顺序容器用法自我总结
顺序容器类型: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顺序容器用法自我总结的更多相关文章
- STL顺序容器的基本操作
容器主要分为:顺序容器和关联容器 顺序容器和关联容器,顺序容器主要有:vector.list.deque等.其中vector表示一段连续的内存地址,基于数组的实现,list表示非连续的内存,基于链表实 ...
- STL顺序容器【vector】【deque】【list】
我们都知道,stl在集装箱船分为两类,订购集装箱和相关的容器. 顺序容器有三种即动态数组vector,双端队列deque,以及链表list (对csdn的文字排版严重吐槽.写好的版发表了就变了) 一: ...
- C++ STL 顺序容器--list + 关联容器
list 双向链表,可以双向遍历,既指向前驱节点,又指向后继但不能随机访问任意元素,可动态增加或者减少元素,内存管理自动完成,增加任何元素都不会使迭代器失效, 删除元素时,除了指向当前被删元素的迭代器 ...
- STL常用容器用法
-1. 本文章中所有函数原型均为C++98的标准. 通用的操作 //遍历容器--以vector,map为例 vector<int> vt; map<int,int> mp; f ...
- STL之顺序容器
顺序容器: vector:数组 list:链表 deque:双端数组 顺序容器适配器: stack:堆栈 queue:队列 priority_queue:优先级队列 deque是一个动态数组 dequ ...
- C++——STL中三种顺序容器的简要差别
C++ STL 提供了3个顺序容器 :vector, deque, list Vector动态数组.支持高速訪问:list双向链表,支持高速插入和删除. vector 中的元素是顺序存放的.所以随机訪 ...
- STL之如何选择顺序容器
一.顺序容器的分类 顺序容器:vector向量.list链表.deque双端队列: 优先级最高的是vector向量,它的速度比较快,优点最多: 在程序设计中,容器可以切换: #include < ...
- c++复习:STL之容器
1 STL的string 1 String概念 string是STL的字符串类型,通常用来表示字符串.而在使用string之前,字符串通常是用char*表示的.string与char*都可以用来表示字 ...
- C++-STL:vector用法总结
目录 简介 用法 1. 头文件 2. vector的声明及初始化 3. vector基本操作 简介 vector,是同一类型的对象的集合,这一集合可看作可变大小的数组,是顺序容器的一种.相比于数组,应 ...
随机推荐
- Java多线程之synchronized和volatile
概述 用Java来开发多线程程序变得越来越常见,虽然Java提供了并发包来简化多线程程序的编写,但是我们有必要深入研究一下,才能更好的掌握这块知识. 本文主要对Java提供的底层原语synchroni ...
- 1级搭建类101-Oracle 11g 单实例 FS LVM(11.2.0.4+RHEL 5)公开
项目文档引子系列是根据项目原型,制作的测试实验文档,目的是为了提升项目过程中的实际动手能力,打造精品文档AskScuti. 项目文档引子系列目前不对外发布,仅作为博客记录.如学员在实际工作过程中需提前 ...
- mysql常用函数及关键字汇总
关键字 1...mysql包含之in SELECT count(1) as count FROM 表名 a,表名 b WHERE a.主键 = b.外键 and a.字段 in('1','2,'3' ...
- jQuery---创建和添加节点
创建和添加节点 //创建jq对象 var $li = $('<a href="http://web.itcast.cn" target="_blank"& ...
- 844. 走迷宫(bfs模板)
给定一个n*m的二维整数数组,用来表示一个迷宫,数组中只包含0或1,其中0表示可以走的路,1表示不可通过的墙壁. 最初,有一个人位于左上角(1, 1)处,已知该人每次可以向上.下.左.右任意一个方向移 ...
- python is 与==区别
总结 is 比较的是两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同.莱布尼茨说过:“世界上没有两片完全相同的叶子”,这个is正是这样的比较,比较是不是同一片叶子(即比较的id ...
- JDK线程池和Spring线程池的使用
JDK线程池和Spring线程池实例,异步调用,可以直接使用 (1)JDK线程池的使用,此处采用单例的方式提供,见示例: public class ThreadPoolUtil { private s ...
- cf 水管问题
原题链接:https://vjudge.net/contest/331120#problem/E 原文英语: You are given a system of pipes. It consists ...
- Codeforce 459A - Pashmak and Garden (已知两点求另外两点构成正方形)
Pashmak has fallen in love with an attractive girl called Parmida since one year ago... Today, Pashm ...
- java的服务是每收到一个请求就新开一个线程来处理吗?tomcat呢?
首先,服务器的实现不止有这两种方式. 先谈谈题主说的这两种服务器模型: 1.收到一个请求就处理,这个时候就不能处理新的请求,这种为阻塞 这个是单线程模型,无法并发,一个请求没处理完服务器就会阻塞,不会 ...