码迷,mamicode.com
首页 > 其他好文 > 详细

STL模板_multimap_智能指针作为键值

时间:2015-11-08 20:41:06      阅读:393      评论:0      收藏:0      [点我收藏+]

标签:

map的键值的类型

  -可以是自定的类型(对象、函数指针、智能指针、。。。)

  -但是有副作用-当自己定义的类型键值无法用系统自己提供的 < 或者 > 进行排序的时候,会出现各种问题

  -所以需要自己定义比较器来进行处理

解决:

  -如果键值是对象类型

    -可以自己在类中对 < 或者 > 运算符进行重载   

      -不需要对==进行重载

      -因为元素的排序是根据<,和> 进行比较的

eg:

  -a > b 则 b <= a;

  -这边有点疑问。。待补充。。。。

class Key{
public: 
       Key(int ival):_Ival(ival){}   
       int _Ival;
};
bool operator<(const Key& left, const Key& right){    
    //return left._Ival < right._Ival;  
    return false; 
 //如果总是return false, aMap.size()就总是1.任何数据    进来都是/a >=  b && b >= a故总是相等.
}

  -当我们无法对类进行修改的时候,可以在类外用比较函数进行处理

  -这边有点疑问。。待补充。。。。

eg: 

inline bool compare(const Sale_item& lhs, const Sale_item& rhs) 
{ 
    return lhs.book <rhs.book; 
} 

typedef bool (*Comp)(const Sale_item&, const Sale_item&); 

std::multiset <Sale_item, Comp > items(compare); 

 

参考:

  -http://www.zhihu.com/question/34290683?sort=created

  -http://blog.csdn.net/ultrahook/article/details/8146529

  -http://bbs.csdn.net/topics/360183804

 

STL模板_multimap_智能指针作为键值

标签:

原文地址:http://www.cnblogs.com/Neo-Lc/p/4947963.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!