STL
雨羊
学生
展开
-
stl-map
1. map的概念 map mp,map翻译为映射,key具有唯一性,key-value为一对一的映射关系,map自带的自动排序是根据key的值来排序的。 2. map的基本操作 map mp,定义一个map mp.find(key);返回键为key的映射的迭代器,找不到则返回mp.end(); O(logn) mp.count(key); 有此key返回1,否则返回0; mp.原创 2017-07-11 23:34:54 · 210 阅读 · 0 评论 -
【C++】STL常用容器总结之七:对组pair与关联容器
8、对组pair 在这部分,我们先介绍一下对组pair与关联容器,之后再介绍常用的几个具体的关联容器。 1、关联容器 关联容器是存储对象集合的类型,支持通过键的高效查询。关联容器的大部分行为与顺序容器相同,二者的本质区别在于关联容器通过键存储和读取元素,而顺序容器是通过元素在容器中的位置顺序存储和访问元素。 关联容器的每个元素包含一个键值(key)和一个实值(value)。当元素被插入到关...转载 2018-07-27 16:46:16 · 296 阅读 · 0 评论 -
【C++】STL常用容器总结之六:基于deque的顺序容器适配器
7、基于deque的顺序容器适配器 1、stack的基本概念 Stack即栈,允许新增元素、移除元素、取得最顶端元素。但除了最顶端外,没有任何其他方法可以存取stack的其他元素,换言之,stack不允许随机访问。可以将stack看成是封闭了一端开口的deque。 将元素插入stack的操作称为push,将元素弹出stack的操作称为pop。Stack所有元素的进出都必须符合“后进先出”的条...转载 2018-07-27 16:44:50 · 163 阅读 · 0 评论 -
【C++】STL常用容器总结之五:双端队列deque
6、双端队列deque 所谓的deque是”double ended queue”的缩写,双端队列不论在尾部或头部插入元素,都十分迅速。而在中间插入元素则会比较费时,因为必须移动中间其他的元素。双端队列是一种随机访问的数据类型,提供了在序列两端快速插入和删除操作的功能,它可以在需要的时候改变自身大小,完成了标准的C++数据结构中队列的所有功能。 Vector是单向开口的连续线性空间,deque...转载 2018-07-27 16:43:40 · 140 阅读 · 0 评论 -
【C++】STL常用容器总结之四:链表list
5、链表list List是每个节点包含前驱指针、后继指针和数据域三个部分的双向链表。List不提供随机存取,访问元素需要按顺序走到需存取的元素,时间复杂度为O(n),在list的任何位置上执行插入或删除操作都非常迅速,只需在list内部调整一下指针。list不仅是一个双向链表,而且还是一个环状双向链表。所以它只需要一个指针,便可以完整实现整个链表。(这里需要特别强调一下:list到底是不是双向...转载 2018-07-27 16:41:51 · 397 阅读 · 0 评论 -
【C++】STL常用容器总结之三:向量vector
4、向量vector Vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。Vector的数据安排及操作方式与array非常相似,唯一的差别在于array是静态空间,一旦配置了就不能改变;vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。 使用vector之前,必须包含相应的头文件和命名空间: #include <vector> ...转载 2018-07-27 14:28:20 · 143 阅读 · 0 评论 -
【C++】STL常用容器总结之二:顺序容器
3、顺序容器 所谓序列式容器,其中的元素都可序(ordered),但未必有序(sorted)。array为C++语言内置的序列容器,STL另外提供vector、list、deque、stack、queue等等顺序式容器。它们的差别在于访问元素的方式,以及添加或删除元素相关操作的运行代价。 标准库还提供了三种容器适配器(adapter),所谓适配器是根据原始的容器类型所提供的操作,通过定义新的操...转载 2018-07-27 14:16:47 · 145 阅读 · 0 评论 -
【C++】STL常用容器总结之一:容器与迭代器
声明: 1、本博文主要整理自《C++ Primer》和《STL源码剖析》这两本经典书籍。同时,也参考了网络中不少优秀博客,对这些博客的作者表示感谢。 2、由于博主能力有限,对于一些容器的用法可能尚未进行深入研究。因此,本博文若有错误和不足之处,欢迎大家批评指正。 3、本博文仅作学术交流只用,无任何其他用途。 言归正传,下面开始介绍C++中的STL容器。 1、容器的概念 Standard ...转载 2018-07-27 14:08:43 · 185 阅读 · 0 评论 -
C++STL容器使用经验总结
第1条:慎重选择容器类型。 标准STL序列容器:vector、string、deque和list。 标准STL关联容器:set、multiset、map和multimap。 非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一“重型”string。 非标准的关联容器hash_set、hase_multiset、hash_map和hash_multimap。 v...原创 2018-07-27 11:57:28 · 227 阅读 · 0 评论 -
stl-heap
头文件algorithm make_heap();建堆,大顶堆从小到大排序,小顶堆从大到小排序 pop_heap();把第一个和最后一个调换,然后把[first,end-1]重新构堆 push_heap();假设一开始是个有效堆,加进来一个或者一组元素重新构堆 sort_heap();堆排序 #include #include #include #include using namesp原创 2018-03-07 17:59:27 · 142 阅读 · 0 评论 -
stl-vector
1、 vector的基本操作 vector的长度根据需要自动改变。 vectore name;定义vector vectore name(n,x);可以将vector初始化为n个x; name.push_back();添加元素,时间复杂度O(1) name.pop();删除元素;O(1) name.size();获得元素个数;O(1) name.clear();清空vector中的所原创 2017-07-11 20:36:58 · 234 阅读 · 0 评论 -
HDU 4544 湫湫系列故事——消灭兔子
题目链接:HDU 4544 一个需要用到优先队列的题 ,这里需要用到自定义优先队列的优先级,优先队列的优先级与sort是相反的,less表示小的优先,重载小于运算符的时候,a>b在sort里面表示从大到小排列,在优先队列里面表示小的优先弹出,这里关于重载运算符介绍了三种写法,这也是我第一次用优先队列,把兔子血量从大到小排序,把大于兔子血量的箭压进队列 然后依次让价钱最低的弹出...这就是具体思路原创 2017-04-25 22:34:25 · 376 阅读 · 0 评论 -
PAT排名汇总
输入格式: 输入的第一行给出一个正整数N(\le≤100),代表考点总数。随后给出N个考点的成绩,格式为:首先一行给出正整数K(\le≤300),代表该考点的考生总数;随后K行,每行给出1个考生的信息,包括考号(由13位整数字组成)和得分(为[0,100]区间内的整数),中间用空格分隔。 输出格式: 首先在第一行里输出考生总数。随后输出汇总的排名表,每个考生的信息占一行,顺序为:原创 2017-07-08 14:29:25 · 1107 阅读 · 1 评论 -
stl—string
1. string的概念 可以用来存放字符串,操作方便 2. string的基本操作 头文件#include String s;定义一个string; 初始化 string s=”abc”;定义的时候直接赋值; Cin>>string;输入一个字符串,以空格、tab、换行结束; getline(cin,s);输入一个字符串,以回车结束,可以包含空格; getline(cin,s原创 2017-07-11 21:43:52 · 295 阅读 · 0 评论 -
map的详细用法: 转
map的详细用法: map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内转载 2017-07-15 21:16:22 · 218 阅读 · 0 评论 -
STL中常用的vector,map,set,sort 用法 转
STL中的常用的vector,map,set,sort,pair用法 C++的标准模板库(Standard Template Library,简称STL)是一个容器和算法的类库。容器往往包含同一类型的数据。STL中比较常用的容器是vector,set和map,比较常用的算法有Sort等。 . 一. vector 1.声明: 一个vec转载 2017-07-15 14:06:18 · 403 阅读 · 0 评论 -
Vector、set、string、map的区别
Vector、set、string、map的区别 1.插入的区别(主要看参数) Vectore: 添加、删除用push_back(x);pop_back(); 插入用index(it,x); Set:: 插入用index(x); String: 插入 insert(pos,str);在pos下标处插入str; Insert(it,it1,it2);在it出插入it1~it2内元素原创 2017-07-12 00:25:21 · 354 阅读 · 0 评论 -
stl-set
1、 set的概念 set翻译为集合,是一个内部有序且不含重复元素的容器,可用于删除重复元素的题目。 2、 set的基本操作 头文件#include set s;定义一个set; s.insert(x);将x插入set容器中,并自动排序和去重 O(logN)//注意此时间复杂度,非O(1),插入后需要排序 s.find(value);返回set中对应值为value的迭代器 O(logN原创 2017-07-11 22:30:09 · 196 阅读 · 0 评论 -
rope基本操作
在g++头文件中,<ext/rope>中有成型的块状链表,在using namespace __gnu_cxx;空间中,其操作十分方便。 基本操作: rope test; test.push_back(x);//在末尾添加x test.insert(pos,x);//在pos插入x test.erase(pos,x);//从pos开始删除x个 test.copy...转载 2018-07-28 08:59:12 · 375 阅读 · 0 评论