摘要:
STL中的priority_queue(优先队列)是一种会按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序的容器,不同优先级的情况下,top()上永远是最高优先级的数据,其底层采用的是堆结构(默认大顶堆)。注意相同优先级下并没有先进先出,后面的例子中可以看到 头文件#inclu... 阅读全文
随笔分类 - C++ STL
谈谈map中的count方法
2016-01-20 22:09 by itwolf, 24696 阅读, 收藏, 编辑
摘要:
map和set两种容器的底层结构都是红黑树,所以容器中不会出现相同的元素,因此count()的结果只能为0和1,可以以此来判断键值元素是否存在(当然也可以使用find()方法判断键值是否存在)。拿map举例,find()方法返回值是一个迭代器,成功返回迭代器指向要查找的元素,失败返回的迭代器指向en... 阅读全文
注意map<> 的[]
2016-01-18 20:10 by itwolf, 297 阅读, 收藏, 编辑
摘要:
其实在之前一篇关于map的基本操作中已经提到过注意[]操作,这里再强调一下。先看下面的程序:#include#includeusing namespace std;int main(){ mapnums; nums[6]++; nums[3]+=5; if(0==nums[4... 阅读全文
C++ STL 中erase()的使用需要小心
2016-01-13 21:19 by itwolf, 1702 阅读, 收藏, 编辑
摘要:
C++ STL极大的方便了用户编写程序,但是同时一不小心也会犯一些错误,如erase()造成迭代器失效经常会引起错误。错误示例: std::list List; std::list::iterator it; for( it = List.begin(); it != ... 阅读全文
int string相互转换
2015-09-02 21:03 by itwolf, 228 阅读, 收藏, 编辑
摘要:
一、itoa()和atoi()注意:这两个函数并不是标准的C函数,而是windows环境下特有的函数。1、itoa#include#includeusing namespace std;int main(){ int num=12345; string str; char s[30... 阅读全文
sort+结构体实现二级排序
2015-04-20 20:34 by itwolf, 2820 阅读, 收藏, 编辑
摘要:
之前介绍的sort函数由于其效率较高,使用较为简单让我用起来那叫一个爽,今天再写一篇使用sort+结构体实现二级排序的方法。还是先想个问题吧,比如我想输入5个同学的名字和身高,然后得到他们身高的降序,但是如果出现相同身高的情况,名字的拼音靠前的排在前面。好,现在这个问题已经涉及到了二级排序,要按照身... 阅读全文
C++ STL之迭代器注意事项
2015-04-17 22:55 by itwolf, 1107 阅读, 收藏, 编辑
摘要:
1、两个迭代器组成的区间是前闭后开的2、如果迭代器的有效性,如果迭代器所指向的元素已经被删除,那么迭代器会失效http://blog.csdn.net/hsujouchen/article/details/89872333、迭代器指向的内容为空的时候(如已经指向end的时候)是不能访问值的,否则运行... 阅读全文
C++STL之整理算法
2015-04-15 09:15 by itwolf, 316 阅读, 收藏, 编辑
摘要:
这里主要介绍颠倒、旋转、随机排列和分类4中常见的整理算法1、颠倒(反转)void reverse(_BidIt _First, _BidIt _Last)_OutIt reverse_copy(_BidIt _First, _BidIt _Last,_OutIt _Dest)2、旋转_FwdIt r... 阅读全文
C++ STL之排序算法
2015-04-14 15:08 by itwolf, 2890 阅读, 收藏, 编辑
摘要:
排序算法和查找算法差不多,也涉及到迭代器区间问题,关于该问题的注意事项就不在啰嗦了一、全部排序sort、stable_sortsort是一种不稳定排序,使用时需要包含头文件algorithm默认可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。如果只传入这两... 阅读全文
C++ STL之查找算法
2015-04-14 11:29 by itwolf, 2878 阅读, 收藏, 编辑
摘要:
C++STL有好几种查找算法,但是他们的用法上有很多共同的地方:1、除了binary_search的返回值是bool之外(查找的了返回true,否则返回false),其他所有的查找算法返回值都是一个迭代器(查找成功返回目标所在迭代器的位置,否则返回最后一个元素的后一个位置或者说是容器的end())2... 阅读全文
C++ STL之set的基本操作
2015-04-13 21:05 by itwolf, 12903 阅读, 收藏, 编辑
摘要:
set是集合,虽然也存在键值和实值,不过两者根本就是同一个值,键值的设置完全就是为了满足红黑树的底层结构,set操作与map很像不过也有些不同。1、set迭代器与map的不同:(1)set使用接引用运算符*取值,而map使用first和second取值。(2)set的迭代器都是常量迭代器,不能用来修... 阅读全文
C++STL之map的基本操作
2015-04-13 15:08 by itwolf, 846 阅读, 收藏, 编辑
摘要:
STL中基本的关联式容器有map和set,它们都是以红黑树作为其底层的结构,具有非常高的查找、删除效率,内容会按照键值自动排序。使用map的注意事项:1、关联式容器的键值是不允许修改的,所以永远不要试图去修改关联式容器的键值2、插入数据时,如果使用的是insert,并且新插入的键值在原映射中已经存在... 阅读全文
C++ STL之deque的基本操作
2015-04-12 13:40 by itwolf, 1800 阅读, 收藏, 编辑
摘要:
前两篇博文中已经介绍了vector和list的两种容器,我们发现他们各有各的优缺点,vector在内存中连续存储,支持随机访问,但是查找和删除的效率比较低,而list在内存中是链式存储的查找和删除的效率很高,但是不支持随机存储,那么deque就综合和两者的优点,将若干连续的内存通过某种手段拼接在一起... 阅读全文
C++ STL之list容器的基本操作
2015-04-12 11:19 by itwolf, 9336 阅读, 收藏, 编辑
摘要:
由于list和vector同属于序列式容器,有很多相同的地方,而上一篇中已经写了vector,所以这一篇着重写list和vector的不同之处和特有之处。特别注意的地方:(1)STL中迭代器容器中都要注意的地方(vector中已经提到):1)任何时候同时使用两个迭代器产生的将会是一个前闭后开的区间(... 阅读全文
C++ STL之vector容器的基本操作
2015-04-11 22:48 by itwolf, 681 阅读, 收藏, 编辑
摘要:
注意事项:特别注意任何时候同时使用两个迭代器产生的将会是一个前闭后开的区间(具体见插入和删除的例子)特别注意begin()指向的是vec中的第0个元素,而end是指向最后一个元素的后面一个位置(不是最后一个元素)特别注意迭代器的时效性,如果一个迭代器所指向的内容已经被删除,而后又使用该迭代器的话,会... 阅读全文
C++STL 之排列
2015-04-10 12:53 by itwolf, 729 阅读, 收藏, 编辑
摘要:
固然我们可以自己使用递归编写全排列程序,但是既然STL里面已将有了这个功能为什么不直接用呢,下面就写一下直接使用C++ STL生成全排序的程序函数名:next_permutation包含头文件:algorithm函数原型:template bool next_permutation(Bidirec... 阅读全文
C++ string类的学习
2015-03-30 19:03 by itwolf, 491 阅读, 收藏, 编辑
摘要:
string类对于处理字符串的一些应用非常的方便,我个人感觉,string和字符数组const char *很像,而且又比字符数组用起来方便的多。注意其删除,取子串,插入等函数里面都有一个重载版本是使用偏移量来操作的,注意其默认值是不同的,erase和substr里面的默认值是偏移量为0,个数是np... 阅读全文
转载:C++ STL set学习
2015-03-30 14:34 by itwolf, 249 阅读, 收藏, 编辑
摘要:
声明:本文转载自Penguin的博客http://blog.sina.com.cn/s/blog_779cf3410101389s.html1,set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就 像一个集合一样。所有的操作的都是严格在logn时间之内完成,... 阅读全文
C++ STL stack和queue
2015-03-10 09:55 by itwolf, 349 阅读, 收藏, 编辑
摘要:
C++ STL中独立的序列式容器只有vector,list,deque三种,stack和queue其实就是使用容器适配器对deque进行了封装,使用了新接口。使用标准库的栈和队列时,先包含相关的头文件#include#include定义栈如下:stack stk;定义队列如下:queue q;栈提供... 阅读全文
转载:C++ map的基本操作和使用
2015-02-01 10:24 by itwolf, 252 阅读, 收藏, 编辑
摘要:
声明:本文转自:http://www.cnblogs.com/hailexuexi/archive/2012/04/10/2440209.html1、map简介map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实... 阅读全文