如何为排序,查找,set,map提供自定义比较功能
2014-05-04 22:12
405 查看
set按照operator<重载操作符比较规则从小到大排序
set<type> setValue;
set<type,less<type> > setValue;
set按照operator<重载操作符比较规则从大到小排序
set<type,greater<type> > setValue;
set按照自定义比较规则从大到小排序
set<type, compareType> setValue;
compareType为实现bool operater(const type& v1, const type& v2)的类。
TODO:程序范例。
map按照operator<重载操作符比较规则从小到大排序
map<keyType, valueType> setValue;
map<keyType, valueType,less<keyType>> setValue;
map按照operator<重载操作符比较规则从大到小排序
map<keyType, valueType,greater<keyType>> setValue;
map按照自定义比较规则从大到小排序
map<keyType, valueType,compareKeyType> setValue;
compareKeyType为实现bool operater(const keyType& v1, const keyType& v2)的类。
TODO:程序范例。
模板函数min按照自定义比较规则返回最小值
template<class T, class Compare>
inline const T& min(const T& a, const T& b, Compare) {
return comp(a, b) ? a : b;
}
Compare为函数或者仿函数
模板函数max按照自定义比较规则返回最小值
template<class T, class Compare>
inline const T& max(const T& a, const T& b, Compare) {
return comp(b, a) ? a : b;
}
Compare为函数或者仿函数
模板函数max_element按照operator<重载操作符比较规则返回最大值
模板函数max_element按照自定义比较规则返回最大值
set<type> setValue;
set<type,less<type> > setValue;
set按照operator<重载操作符比较规则从大到小排序
set<type,greater<type> > setValue;
set按照自定义比较规则从大到小排序
set<type, compareType> setValue;
compareType为实现bool operater(const type& v1, const type& v2)的类。
TODO:程序范例。
map按照operator<重载操作符比较规则从小到大排序
map<keyType, valueType> setValue;
map<keyType, valueType,less<keyType>> setValue;
map按照operator<重载操作符比较规则从大到小排序
map<keyType, valueType,greater<keyType>> setValue;
map按照自定义比较规则从大到小排序
map<keyType, valueType,compareKeyType> setValue;
compareKeyType为实现bool operater(const keyType& v1, const keyType& v2)的类。
TODO:程序范例。
模板函数min按照自定义比较规则返回最小值
template<class T, class Compare>
inline const T& min(const T& a, const T& b, Compare) {
return comp(a, b) ? a : b;
}
Compare为函数或者仿函数
模板函数max按照自定义比较规则返回最小值
template<class T, class Compare>
inline const T& max(const T& a, const T& b, Compare) {
return comp(b, a) ? a : b;
}
Compare为函数或者仿函数
模板函数max_element按照operator<重载操作符比较规则返回最大值
template<class _FwdIt> inline _FwdIt _Max_element(_FwdIt _First, _FwdIt _Last) { // find largest element, using operator< _DEBUG_RANGE(_First, _Last); _FwdIt _Found = _First; if (_First != _Last) for (; ++_First != _Last; ) if (_DEBUG_LT(*_Found, *_First)) _Found = _First; return (_Found); }
模板函数max_element按照自定义比较规则返回最大值
template<class _FwdIt, class _Pr> inline _FwdIt _Max_element(_FwdIt _First, _FwdIt _Last, _Pr _Pred) { // find largest element, using _Pred _DEBUG_RANGE(_First, _Last); _DEBUG_POINTER(_Pred); _FwdIt _Found = _First; if (_First != _Last) for (; ++_First != _Last; ) if (_DEBUG_LT_PRED(_Pred, *_Found, *_First)) _Found = _First; return (_Found); }
#define _DEBUG_LT_PRED(pred, x, y) _Debug_lt_pred(pred, x, y, __FILEW__, __LINE__)
template<class _Pr, class _Ty1, class _Ty2> inline bool __CLRCALL_OR_CDECL _Debug_lt_pred(_Pr _Pred, const _Ty1& _Left, const _Ty2& _Right, const wchar_t *_Where, unsigned int _Line) { // test if _Pred(_Left, _Right) and _Pred is strict weak ordering if (!_Pred(_Left, _Right)) return (false); else if (_Pred(_Right, _Left)) _DEBUG_ERROR2("invalid operator<", _Where, _Line); return (true); }
相关文章推荐
- 元素为自定义复合结构时 map,set 如何处理重复 key 及排序?
- sort/map/unordered_map自定义类型如何构造比较函数
- STL中sort、priority_queue、map、set的自定义比较函数
- STL中sort、priority_queue、map、set的自定义比较函数
- 自定义比较优先级的set:TreeSet(有序(按照某种规则排序),唯一)
- STL set,map , priority_queue 及 lower_bound 的排序比较函数
- map及set中自定义比较函数
- STL中sort、priority_queue、map、set的自定义比较函数
- 如何使用XE2及更高版本中提供的自定义皮肤(样式)功能
- 使用自定义比较操作符排序,查找
- 如何使用XE2及更高版本中提供的自定义皮肤(样式)功能
- Java编程之TreeSet排序两种解决方法(1)元素自身具备比较功能,元素需要实现Comparable接口覆盖compare(2)创建根据自定义Person类的name进行排序的Comparator
- 比较测试map、unodered_map、unordered_set性能效率,整型数值查找
- Map,Set按插入顺序排序比较与实现
- 集合的特殊功能之TreeSet集合如何保证元素的唯一及排序的
- Java中list.map.set基本概念,方法比较和遍历方式
- usort — 使用用户自定义的比较函数对数组中的值进行排序
- ios 画图 绘图的实现(自由批注中视图的subview的实现)bitmap Quartz 2D 缓存位图 自由批注功能的实现 如何实现在view上自由绘图 提供源码
- Java 实现Map集合排序功能
- Java集合排序及java集合类详解--(Collection, List, Set, Map)