map的erase方法
摘要:如果erase()总是返回下一元素的位置,那就可以像在vector容器中删除元素一样,如:// 删除所有实值为2的元素 map< int, int >::iterator itMap = mapInt.begin(); for ( ; itMap != mapInt.end(); ) { if ( itMap->second == 2 ) { itMap = mapInt.erase( itMap ); } else { ++itMap; } }但是,注意,以上的方式只在vc使用P.J.STL中才能编译通过,而使用SGI STL库则编译不过,因为SGISTL库在设计中考虑到如
阅读全文
posted @
2011-03-02 11:10
Ray_8686
阅读(1809)
推荐(0)
STL学习笔记 ---- 由set的声明所引发的自定义比较的实现方式 作者:winterTTr(转载请注明)
摘要:对于set这个STL容器来说,就实现来说,我了解到的版本,是通过RB-Tree的方式实现的,内部逻辑似乎是采用Tree结构的平行方式进行展开,换句话说也就是将Tree保存在类似vector这样的线性结构中,不过,这篇帖子并不在于讨论内部结构,而是具体使用中出现的自定义比较的几种方式。set的话,默认情况,可以不指定第二个模板参数,但是,如果使用非基础类型的话,是需要指定第二个模板参数,用来进行比较的。我这里以几种方式来实现,原理基本上是相同的,运行结果是完全相同的,不过实现的方式却各有特点:重载<操作符 view plaincopy to clipboardprint?#include
阅读全文
posted @
2011-03-01 20:15
Ray_8686
阅读(281)
推荐(0)