logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

如何使用STL PriorityQueue 优先队列

相信大家对优先队列不陌生。STL提供的PriorityQueue属于容器适配器,底层默认用vector容器来实现。实现原理是在用vector里构造一个Heap(堆),堆一般是用数组来储存的。下面是一个使用有限队列的例子,用来实现一个错误关联器,总是把优先级高的错误放在最前面。#include #include #include #include // this cl

effective STL - 避免原地修改set和multiset的键

条款22:避免原地修改set和multiset的键本条款的动机很容易理解。正如所有标准关联容器,set和multiset保持它们的元素有序,这些容器的正确行为依赖于它们的有序性。如果你改了关联容器里的一个元素的值(例如,把10变为1000),新值可能不在正确的位置,而且那将破坏容器的有序性。很简单,是吗?这对于map和multimap特别简单,因为试图改变这些容器里的一个键值的程序将不

Effective STL 条款21: 关联容器的strict weak order(让比较函数对相等的值返回false)

 条款21: 永远让比较函数对相等的值返回false让我向你展示一些比较酷的东西。建立一个set,比较类型用less_equal,然后插入一个10:set > s;// s以“<=”排序s.insert(10);// 插入10现在尝试再插入一次10:s.insert(10);对于这个insert的调用,set必须先要判断出10是否已经位于其中了。

#less#测试#数据结构
如何从vector里删除元素(erase的副作用)

 现在用stl的人越来越多, stl确实是套很漂亮的算法和数据结构库. 但是初用stl的人往往会遇上很多问题.从一个容器中删除元素,是很常用的操作,但是也是初学者常会犯错误的地方,上次baosong就发现了删除map和list中元素会犯的错误. vector是stl里很常用的一个容器, 和map,list等容器相比, 从vector中删符合某些条件的元素有更多的麻烦.比如,我们要完成如下的任务

#list
使用vector::reserve来避免不必要的重新分配

关于STL容器,最令人称赞的特性之一就是是只要不超过它们的最大大小,它们就可以自动增长到足以容纳你放进去的数据。(要知道这个最大值,只要调用名叫max_size的成员函数。)对于vector和string,如果需要更多空间,就以类似realloc的思想来增长大小。这个类似于realloc的操作有四个部分:分配新的内存块,它有容器目前容量的倍数。在大部分实现中,vector和string

#数据结构
STL Map使用详解(一)

  Map是一种关联容器,用来存储key-value数据。其中的key是用来查找的关键字,value是实际存放的值。一个特定的关键字只能与一个唯一的值相联系。map是由一对一对的键值(key/value)所组成的排序结构体,键值是读一无二的(unique)的。  map通常是以平衡二叉查找树来实现的,因此map对插入,删除,查找能保证log(N)的时间复杂度。对于海量的数据的插入和

开源日志系统 - log4cplus (五)

  开源日志系统 - log4cplus (五) 收藏### 优先级控制 ###在研究LogLevelManager之前,首先介绍一下log4cplus中logger的存储机制,在log4cplus中,所有logger都通过一个层次化的结构(其实内部是hash表)来组织的,有一个Root级别的logger,可以通过以下方法获取:    Logger root = Logger::getRoot()

到底了